加速代码执行速度

CDR插件的代码运行,可以通过开启插件代码运行环境优化,来加快执行速度。

主要是锁定Coreldraw的工作状态和显示状态,屏蔽文档的对象变化在电脑上显示的频繁变更,提高插件代码执行的效率和速度。

开启优化后,代码执行完毕,必须关闭优化的配置,不然Coreldraw的工作区就动不了了。

如果代码运行过程发生异常,关闭优化的动作无法完成,需要在catch块进行关闭优化的配置。

这里用一个静态方法函数供调用:

CdrFunction 代码运行环境优化

        //-------------------------------------------------------------------------------------------------------------------------

        /// <summary>

        /// Cdr开启优化

        /// </summary>

        /// <param name="commandGroupName">命令组合名称</param>

        // -----------------------------------------------------------------------------------------------

        public static void CdrBeginOptimization(string commandGroupName)

        {

            cdrApp.ActiveDocument.BeginCommandGroup(commandGroupName);

            cdrApp.Status.BeginProgress();

            cdrApp.ActiveDocument.SaveSettings();

            cdrApp.Optimization = true;

            cdrApp.EventsEnabled = false;

            cdrApp.ActiveDocument.PreserveSelection = false;

        }

结束优化

        //-------------------------------------------------------------------------------------------------------------------------

        /// <summary>

        /// Cdr结束优化

        /// </summary>

        // -----------------------------------------------------------------------------------------------

        public static void CdrEndOptimization()

        {

            cdrApp.ActiveDocument.PreserveSelection = true;

            cdrApp.ActiveDocument.RestoreSettings();

            cdrApp.EventsEnabled = true;

            cdrApp.Optimization = false;

            cdrApp.Refresh();

            cdrApp.Status.EndProgress();

            cdrApp.ActiveDocument.EndCommandGroup();

        }

   以文字转曲为例的调用方法:

            try

            {

                RunState.Text = "正在运行";

                CdrFunction.CdrBeginOptimization("所选转曲");

                ShapeRange shapeRange = cdrApp.ActiveSelectionRange;

                CdrFunction.ShapeRangeConvertToCurves(shapeRange);

                CdrFunction.CdrEndOptimization();

                RunState.Text = "运行完成";

            }

            catch (Exception ex) { CdrFunction.CdrEndOptimization(); }

上面的方法都是用在CDR的当前激活文档的。如果非当前文档,可以用

Document document=文档对象;

document.Activate();

的方法将文档对象激活,再运用上面的方法。

或者为上面的方法再传入一个Document 对象,将函数块的cdrApp.ActiveDocument替换为该文档对象即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值