CorelDRAWX4的VBA插件开发(十五)选择分辨率一键导出多张图片到桌面

  • 这次来讲怎么样做一个可以选择想要的分辨率或者直接输入某个分辨率,然后一键导出已经选中的所有形状到桌面,这一节也是第十一节内容的升级,希望先看了十一节再到这里接着进行

  • 首先我们回到我们之前创建的面板上来, (如果不知道这个面板在哪可以在第十一节里面查看),我们双击打开这个面板以后再打开工具箱,然后把复合框拉拽到面板上来
    在这里插入图片描述

  • 新建拖拽一个按钮,然后再把他的标题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"就是我们想要添加的字符串, 记得给字符串加上引号,&这个是连接字符串之间的符号

好了,十一节没有讲到的内容基本已经讲完了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值