CorelDRAWX4的VBA插件开发(七)形状的静态编号和一键转位图
优先说一些不容易掌握的一些小技巧.
一.静态编号
静态编号就是每个形状Shape
对象的属性里面有一个叫作StaticID
(静态编号)的这么个功能,它里面是一个长整数Long
,我是到后来才发现这个数的,平时并用不上,但是了解了它可以明白程序是怎么来区别每个形状的.
比如,当我们在空画布上画一个框,那么这个形状的静态编号就会被赋值,它不会有重复的编号,是唯一的,而再画另一个形状其编号会+1,若把两个形状群组那其编号会再+1,不管怎么变,整个画布上不会出现相同的编号,CDR就是通过这种方法以不变应万变.下面就来演示一下:
Sub 第一个插件()
MsgBox CorelDRAW.ActiveShape.StaticID
End Sub
还是把之前的代码稍作修改,直接用MsgBox 后面带上AcitveShape也就是当前选定的一个形状,再带上静态编号, 这样当我们选中某个形状再按按钮的时候,弹窗就会直接显示一个数字,这个数字就是当前形状的编号了,可以回到CDR进行测试.这里就不再讲了.
演示:
转换为位图
示例代码:
Sub 第一个插件()
Set s = CorelDRAW.ActiveShape.ConvertToBitmapEx(cdrCMYKColorImage, False, False, 600, cdrNormalAntiAliasing, True, False, 95)
End Sub
测试:
选中某个群组对象之后点击按钮
cdrImageType
这个 cdrImageType 的颜色模式枚举包含如下内容:
标题 | 枚举值 | 原版描述 | 备注 |
---|---|---|---|
cdrBlackAndWhiteImage | 0 | Specifies black-and-white | 黑白图片 |
cdr16ColorsImage | 1 | Specifies 16-color | 16色 |
cdrGrayscaleImage | 2 | Specifies grayscale | 灰度 |
cdrPalettedImage | 3 | Specifies paletted | 调色板色 |
cdrRGBColorImage | 4 | Specifies RGB | RGB色 |
cdrCMYKColorImage | 5 | Specifies CMYK | CMYK色 |
cdrDuotoneImage | 6 | Specifies duotone | 双色版色 |
cdrLABImage | 7 | Specifies LAB | LAB色 |
cdrCMYKMultiChannelImage | 8 | Specifies multi-channel CMYK | 多通道CMYK色 |
打开发者文档,我们可以看到如下描述:
Shape.ConvertToBitmapEx
Function ConvertToBitmapEx([Mode As cdrImageType = cdrRGBColorImage], [Dithered As Boolean = False], [Transparent As Boolean = False], [Resolution As Long = 72], [AntiAliasing As cdrAntiAliasingType = cdrNormalAntiAliasing], [UseColorProfile As Boolean = True]) As Shape Member of Shape
The ConvertToBitmapEx converts a shape object to a bitmap.
参数 | 描述 |
---|---|
Mode | 设置图像类型并返回cdrImageType.该参数为可选参数,默认值为“cdrRGBColorImage” |
Dithered | 如果设置为True(-1),启用颜色抖动的方法产生中间过渡色调,默认值为“False”。 |
Transparent | 如果设置为True(-1),启用透明背景.默认值为“False”。 |
Resolution | 设置分辨率,默认值为72 |
AntiAliasing | 设置反锯齿,返回cdrAntiAliasingType该参数可选,默认值为“cdrNormalAntiAliasing(1)”。 |
UseColorProfile | 如果设置为True(-1),则使用颜色配置文件,该参数为可选参数,默认值为True |
代码释义
Sub 第一个插件()
Set s = CorelDRAW.ActiveShape.ConvertToBitmapEx(cdrCMYKColorImage, False, False, 600, cdrNormalAntiAliasing, True, False, 95)
End Sub
从前往后依次解释:
cdrCMYKColorImage
是转换为CMYK颜色模式
false
第一个FALSE是关闭颜色抖动,第二个FALSE是不启用透明背景
600
这个是每英寸的长度内分辨率,也就是DPI
cdrNormalAntiAliasing
抗锯齿模式1
True
启用颜色配置文件
False
关闭始终开启叠印黑色
95
叠印黑色最大值为95
这样我们就完成了一键转换位图的功能,要全部转换,则只要加上一个循环即可