VSTO Shapes对象、ShapeRange对象和Shape对象的关系

先附上官方文档网址:
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。

利用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.你学会了合并形状的方法。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值