-
这次来讲怎么样做一个可以选择想要的分辨率或者直接输入某个分辨率,然后一键导出已经选中的所有形状到桌面,这一节也是第十一节内容的升级,希望先看了十一节再到这里接着进行
-
首先我们回到我们之前创建的面板上来, (如果不知道这个面板在哪可以在第十一节里面查看),我们双击打开这个面板以后再打开工具箱,然后把复合框拉拽到面板上来
-
新建拖拽一个按钮,然后再把他的标题
caption
修改成"导出多张图片"
-
右键选择查看代码进入面板的代码界面
-
在上方的userform选项的右侧选择initialize,就会自动生成面板的初始化函数功能,也就相当于在这个面板在内存中被创建的时候会自动执行这里面的代码,所以,我们就用来把这个复选框里面加上几行分辨率的数字
Private Sub UserForm_Initialize()
Me.ComboBox1.AddItem ("300")
Me.ComboBox1.AddItem ("400")
Me.ComboBox1.AddItem ("500")
Me.ComboBox1.AddItem ("600")
Me.ComboBox1.AddItem ("100")
End Sub
- 然后我回到面板的左下角属性, 这里可以看到一个showModal的选项,叫做模态,为true的时候,这个弹窗必须被关闭才能回到主界面. 而为false的时候面板并不会干扰主界面. 这是一个非常重要的功能,因为我们希望把这个窗口一直停留在屏幕上,所以我们一般来说要选择false. (题外话:模态窗口一般是用构造函数创建,而非模态的对话框是在堆区new创建) 我们大概了解就行了.
- 进入tool多文件添加功能(函数)
'选中对象分别导出JPG到桌面
Sub AllToJpg(Optional resolution As Integer = 400)
Dim OrigSelection As ShapeRange
Set OrigSelection = ActiveSelectionRange
Dim theCount As Integer: theCount = 1
For Each Item In OrigSelection
Item.CreateSelection
Dim expflt As ExportFilter
Set expflt = ActiveDocument.ExportBitmap("F:\Users\Administrator\Desktop\" & CorelDRAW.CorelScriptTools.FormatTime(VBA.DateTime.Now, "HH-mm-ss") & theCount & ".jpg", cdrJPEG, cdrSelection, cdrCMYKColorImage, 0, 0, resolution, resolution, cdrNormalAntiAliasing, False, False, True, False, cdrCompressionNone)
expflt.Finish
theCount = theCount + 1
Next Item
End Sub
上面就是代码, 是一个备用的导出到桌面的功能的功能函数,接下来就只需要调用即可
- 双击"导出多张图片"按钮, 进入按钮的鼠标点击事件功能(功能就是函数),也就是当按钮被点击时所触发的功能
Private Sub CommandButton2_Click()
If ComboBox1.Value <> "" Then
tool.AllToJpg ComboBox1.Value
Else
tool.AllToJpg
End If
End Sub
当然 这个CommandButton2_Click
是程序自动生成的,是这个按钮的编号,我们直接往里面写就可以了, click是鼠标点击的的意思,前面的CommandButton2是按钮的名字
- 看一下效果
代码释义:
Optional
是默认的意思,也就是当我们调用的时候如果不带参数时,允许程序使用默认参数,而后面的= 400
就是默认参数, 而当我们带了参数的时候(tool.AllToJpg ComboBox1.Value
), 这个400就不会生效, 所以我们在调用的时候用了一个判断, 当我们没有选择分辨率的时候调用的时候后面不带参数(tool.AllToJpg
)
Dim OrigSelection As ShapeRange
这里在内存里设了一个名为OrigSelection 的ShapeRange对象, ShapeRange就是形状集合,然后让Set OrigSelection = ActiveSelectionRange
让OrigSelection 内部初始化为当前鼠标已经选择好的集合.
后面的Dim theCount As Integer: theCount = 1
是另设了一个整数,是防止我们多个图片文件名会重复而使用的,一般情况下我已经使用了精确到秒的文件名,但我还是怕重名,所以又在后面加上一个序号来防止重名,我们在循环内部让这个整数每执行一次自动+1theCount = theCount + 1
,而Item.CreateSelection
是每个形状都执行一次选择操作,这样在后面的导出功能函数中,我们就可以直接选择cdrSelection
这个导出当前选择内容的功能了.
Me.ComboBox1.AddItem ("300")
这一句中的Me就是指的它所在的面板,combobox1是复选框自动生成的名字,AddItem
是往它内部添加东西."300"
就是我们想要添加的字符串, 记得给字符串加上引号,&
这个是连接字符串之间的符号
好了,十一节没有讲到的内容基本已经讲完了