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替换为该文档对象即可。