赞
踩
先附上官方文档网址:
Office Visual Basic for Applications (VBA) 参考 | Microsoft Learn
我正在学习制作PPT插件,在PPT中,形状是十分重要的元素。以篇文章来分享我对形状的理解。
与形状有关的三个对象如标题所示。
Shape对象:代表绘图层中的对象,例如自选图形、任意多边形、OLE 对象或图片。 也就是Shape对象代表单个形状。
ShapeRange对象:代表一组Shape对象。例如当同时选中了多个对象,则这个整体为一个ShapeRange对象。
Shapes对象:指定幻灯片上所有Shape对象的集合。
首先生成形状,可用Shapes对象的AddShape方法生成Shape对象。
- //获取页面目前的尺寸
- float w = app.ActivePresentation.PageSetup.SlideWidth; //读取页面宽度
- float h = app.ActivePresentation.PageSetup.SlideHeight; //读取页面高度
-
- //生成图形
- PowerPoint.Slide slide = app.ActiveWindow.View.Slide; //实例化页面
- PowerPoint.Shape shape1 = slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeOval,w/2-20,h/2,Math.Min(w/4,h/4), Math.Min(w / 4, h / 4)); //生成圆形
- PowerPoint.Shape shape2 = slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, w / 2, h / 2, w / 4, h / 4); //生成矩形
- PowerPoint.Shape shape3 = slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeIsoscelesTriangle, w / 2, h / 2, w / 4, h / 4); //生成等腰三角形
上面代码生成了圆形、矩形、等腰三角形三个对象。
如果我们要结合圆形与矩形,如下图所示:
则我们需要得到仅包含圆形和矩形的ShapeRange对象。
方案一:先使用鼠标选中两个图形,再使用Selection对象的ShapeRange属性得到ShapeRange对象。
- PowerPoint.ShapeRange shapeRange = app.ActiveWindow.Selection.ShapeRange;
- //当前窗口中选中的形状
这就离谱,你说我都上鼠标了,我干嘛不直接点击上图中的【结合】?还要你PPT插件何用?所以方案一不可取。
方案二:利用Shapes对象的Range方法,择选圆形和矩形。这也是本文的重点,利用Shapes来获取ShapeRange。
- shape1.Name = "圆"; //给圆形命名
- shape2.Name = "方"; //给矩形命名
- string[] name = {"圆", "方"}; //将所要选择的形状名字构成字符串数组
- PowerPoint.ShapeRange shapeRange = slide.Shapes.Range(name); //在页面所有形状中,选择圆形和矩形构成ShapeRange
- //结合形状
- shapeRange.MergeShapes(Office.MsoMergeCmd.msoMergeUnion);
1.Shapes对象可以直接获取。
2.用Shapes对象的AddShape方法生成Shape对象。
3.用Shapes对象的Range方法获取ShapeRange对象。
4.你学会了合并形状的方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。