本节介绍图片的创建和几何变换。
添加图片
使用Shape对象的AddPicture方法从现有文件创建图片。 该方法返回一个表示新图片的Shape对象。该方法的语法格式为:
code.vba
sht.api.Shapes.AddPicture(FileName,LinkToFile,SaveWithDocument,Left,Top,Width,Height)
其中,sht为工作表。各参数的意义如表5-13中所示。
表5-13 AddPicture方法各参数的意义
| 名 称 | 必需/可选 | 数据类型 | 说 明 |
|---|---|---|---|
| FileName | 必需 | String | 图片文件名 |
| LinkToFile | 必需 | MsoTriState | 设置为False时,使图片成为文件的独立副本,不链接。设置为True时将图片链接到创建它的文件 |
| SaveWithDocument | 必需 | MsoTriState | 将图片与文档一起保存。使用False仅将链接信息存储在文档中。 使用True将链接的图片与插入到的文档一起保存。 如果LinkToFile的值为 False,则此参数必须为 True |
| Left | 必需 | Single | 图片左上角相对于文档左上角的位置 (以磅为单位) |
| Top | 必需 | Single | 图片左上角相对于文档顶部的位置(以磅为单位) |
| Width | 必需 | Single | 图片的宽度, 以磅为单位 (输入-1 可保留现有文件的宽度) |
| Height | 必需 | Single | 图片的高度, 以磅为单位 (输入-1 可保留现有文件的高度) |
本示例将一张图片添加到工作表sht中,该图片链接到创建它的文件, 并与工作表sht一起保存。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\图片.xlsm。
code.vba
Sub Test()
ActiveSheet.Shapes.AddPicture "D:\picpy.jpg", True, True, 100, 50, 100, 100
End Sub
运行过程,生成图5-23所示图片。
【Python】
在Python Shell窗口输入:
code.python
>>> sht.api.Shapes.AddPicture(r"D:\picpy.jpg", True, True, 100, 50, 100, 100)
生成图5-23所示图片。
图5-23 创建图片
图片的几何变换
5.2节介绍了图形的几何变换,使用Shape对象提供的方法,可以对给定的图形进行平移变换、旋转变换、比例变换和对称变换。在实现方法上,图片几何变换的完全相同。
下面利用指定文件创建图片后,对它连续进行旋转变换和水平对称变换。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\图片几何变换.xlsm。
code.vba
Sub Test()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddPicture("D:\picpy.jpg", _
True, True, 100, 50, 100, 100)
shp.IncrementRotation 30 '绕中心顺时针方向旋转30度
shp.Flip 0 '水平翻转
End Sub
运行过程,生成图片并进行几何变换。
【Python】
在Python Shell窗口输入:
code.python
>>> shp=sht.api.Shapes.AddPicture(r"D:\picpy.jpg", True, True, 100, 50, 100, 100)
>>> shp.IncrementRotation(30) #绕中心顺时针方向旋转30度
>>> shp.Flip(0) #水平翻转
旋转变换和对称变换后的图片如图5-24和图5-25所示。注意,对称变换是在前面旋转变换结果的基础上进行的,而不是针对原始图片。[大谦Excel,dqexcel点com]
图5-24 对图片作旋转变换 图5-25 对图片作对称变换