找回密码
 加入
搜索
查看: 6977|回复: 8

[图形处理] au3可以用namespace吗

  [复制链接]
发表于 2014-7-11 17:33:41 | 显示全部楼层 |阅读模式
因要做个小功能,将cdr文件转成图片格式,在c#调试成功,但因实施麻烦,想转成au3的
在使用过程式中发现au3不能调用CorelDRAW里定义里的namespace
请问有办法解决吗
谢谢
Local $oShell = ObjCreate("CorelDRAW.Application") 
If @error Then
        MsgBox(0,0,@error)
EndIf
If IsObj($oShell) Then
        $oShell.OpenDocument("c:\1.cdr",0)
        $oShell.ActiveDocument.ExportBitmap("C:\1.png",CorelDRAW.cdrFilter.cdrPNG,CorelDRAW.cdrExportRange.cdrCurrentPage,CorelDRAW.cdrImageType.cdrRGBColorImage,0, 0, 72, 72,CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing,false,true,true,false,CorelDRAW.cdrCompressionType.cdrCompressionNone)
        $oShell.ActiveDocument.Close();
        $oShell.Quit();
EndIf
如下为c#代码,可以正常运行;
     private static void ConvertCDR2JPG(string Sourcefile, string Targetfile)
        {
            CorelDRAW.Application cdr = new CorelDRAW.Application();
            cdr.OpenDocument(Sourcefile, 1);
            cdr.ActiveDocument.ExportBitmap(Targetfile,
                    CorelDRAW.cdrFilter.cdrJPEG,
                    CorelDRAW.cdrExportRange.cdrCurrentPage,
                    CorelDRAW.cdrImageType.cdrRGBColorImage,
                    0, 0, 100, 100,
                    CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing,
                    false,
                    true,
                    true,
                    false,
                    CorelDRAW.cdrCompressionType.cdrCompressionJPEG,
                    null).Finish();
            cdr.ActiveDocument.Close();
            cdr.Quit();
        }
发表于 2014-7-11 18:19:21 | 显示全部楼层
如果是常量需要用值来代替,如果是属性,那么引用的对象要明确对应到当前程序里的对象
 楼主| 发表于 2014-7-11 19:09:06 | 显示全部楼层
回复 2# kevinch


有将CorelDRAW.cdrFilter.cdrPNG转换成相应的值,也是不行,在c#里转换值也不行。
还搞不清楚是什么原因,能提供个例子吗
谢谢
发表于 2014-7-11 20:05:59 | 显示全部楼层
不会coreldraw的对象操作,经验来自于office vba环境转au3
 楼主| 发表于 2014-7-12 08:43:15 | 显示全部楼层
回复 4# kevinch

看了看excel的au3,没发现在类似的功能,都是引用$oExcel对象的变量,你有相关的例子吗,应该都是相通的。
Local $oExcel = ObjCreate("Excel.Application")
发表于 2014-7-12 10:11:01 | 显示全部楼层
Dim $arr[2][5]=[["a","b","c","d","e"],[1,3,2,4,5]]
$oexcel=ObjCreate("excel.application")
$oexcel.visible=True
$wb=$oexcel.workbooks.add
With $wb.activesheet
        .range("a1").resize(UBound($arr,2),UBound($arr)).value=$arr
        $chart=.shapes.addchart
        $chart.type=51
        $chart.SetSourceData(.range("a1").resize(UBound($arr,2),UBound($arr)))
        $chart.chart.export(@ScriptDir&"\temp.gif","gif")
EndWith
MsgBox(0,"",@ScriptDir&"\temp.gif")
$wb.close(false)
$oexcel.quit
写了个excel导出图表的例子,看一下能不能参考
 楼主| 发表于 2014-7-12 12:02:56 | 显示全部楼层
回复 6# kevinch


    还是有差别,这个例子中所有的对象属性都是创建好对象$oexcel

   而我需要的是引用 CorelDRAW这个namespace定义好的属性与值,但是在au3里根本就不知道怎么引用CorelDRAW这个namespace,在c$里就简单咯,using CorelDRAW;就全部搞掂了
CorelDRAW.cdrFilter.cdrPNG
发表于 2014-7-12 12:08:15 | 显示全部楼层
回复 7# light_he
无论如何,CorelDRAW.cdrFilter.cdrPNG一定会对应一个实际的值或者对象,你要找出来
 楼主| 发表于 2014-7-12 12:16:52 | 显示全部楼层
回复 8# kevinch


   是的,其实都是有对应到值,但我将参数转换为值,也是不行,所以才会想到能否直接引用定义好的namespace
也有可能是其他原因,我再想想,如果 实在不行,就只能用c#了
谢谢啦
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-20 18:48 , Processed in 0.082652 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表