LEADTOOLS包括30多个内置注释对象可以扩展来创建自定义注释对象。本教程演示了如何创建一个定制的圆注释的AnnEllipseObject
类在c# WinForms应用程序中使用文档查看器。
概述 | |
---|---|
总结 | 本教程涵盖了自动化和自定义注释功能在c# WinForms应用程序中使用文档查看器。 |
完成时间 | 45分钟 |
Visual Studio项目 | 下载教程项目(KB) 14日 |
平台 | WinForms c#应用程序 |
IDE | Visual Studio 2019中,2022年 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
熟悉的基本步骤,创建一个项目,初始化文档查看器,并将注释添加到文档查看器检查下面的教程,之前的工作创建一个定制的注释和文档查看器——WinForms c#教程。
从项目中创建的副本绘制和编辑文档注释教程。如果项目不可用,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。对于这个项目,需要下面的引用。
如果使用NuGet引用,本教程需要以下NuGet包和他们的依赖关系:
Leadtools.Annotations.WinForms
Leadtools.Document.Sdk
Leadtools.Document.Viewer.WinForms
如果使用本地DLL的引用,下面的DLL是必要的。dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.dll
Leadtools.Annotations.Automation.dll
Leadtools.Annotations.Engine.dll
Leadtools.Annotations.WinForms.dll
Leadtools.Annotations.Rendering.WinForms.dll
Leadtools.Caching.dll
Leadtools.Codecs.dll
Leadtools.Controls.WinForms.dll
Leadtools.Document.dll
Leadtools.Document.Pdf.dll
Leadtools.Document.Viewer.WinForms.dll
对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可教程。
有两种类型的运行时许可证:
添加了引用、许可设置和文档查看器初始化,可以开始编码。
去Form1.cs
在解决方案资源管理器。右键单击设计窗口并选择视图代码或新闻F7以弹出形式背后的代码。
添加以下语句的使用
块顶部:
使用系统;
使用先;
使用System.Drawing;
使用System.Windows.Forms;
使用Leadtools;
使用Leadtools.Controls;
使用Leadtools.Caching;
使用Leadtools.Annotations.WinForms;
使用Leadtools.Annotations.Designers;
使用Leadtools.Annotations.Automation;
使用Leadtools.Document;
使用Leadtools.Document.Viewer;
第一次下载圆形图标PNG图像。提取和re-name PNG文件Create-a-Custom-Annotation-Circle-Icon.png
。
在解决方案资源管理器,下拉属性选项卡,双击Resources.resx。
点击添加资源然后点击添加现有文件…
浏览到的位置你救了PNG图像,然后单击圆图标开放。资源已经导入后,将创建一个项目资源
文件夹中。
这张图片需要嵌入到该项目。为此,导航到解决方案资源管理器,下拉资源文件夹
,然后单击Create-a-Custom-Annotation-Circle-Icon.png
。图像的属性,改变建立行动嵌入的资源。
在解决方案资源管理器,右键单击项目,突出添加,然后单击创建文件夹。重命名文件夹AnnCircleObject
。
在解决方案资源管理器,右键单击AnnCircleObject
文件夹,突出添加,然后单击类……。
添加三个新类:
AnnCircleDrawDesigner.cs
AnnCircleObject.cs
AnnCircleObjectRenderer.cs
请注意
一定要改变这些类的名称空间为每个匹配Form1.cs中的名称空间。
将以下代码添加到AnnCircleDrawDesigner
类:
使用系统;
使用Leadtools;
使用Leadtools.Annotations.Engine;
使用Leadtools.Annotations.Designers;
名称空间Create_a_Custom_Annotation
{
类AnnCircleDrawDesigner: AnnRectangleDrawDesigner
{
/ /我们需要2点,一个开始和一个结束点
私人LeadPointD开始= LeadPointD.Empty;
私人LeadPointD结束= LeadPointD.Empty;
/ / /<摘要>
/ / /为AnnCircleDrawDesigner Contstructor
/ / /> < /总结
公共AnnCircleDrawDesigner (IAnnAutomationControl automationControl AnnContainer容器,AnnCircleObject annObject)
:基地(annObject automationControl、集装箱){}
/ / /<摘要>
/ / /覆盖的指针事件
/ / /设置开始和结束点,第一次点击的位置
/ / /> < /总结
公共覆盖boolOnPointerDown (AnnContainer发送方,AnnPointerEventArgs e)
{
开始= e.Location;
结束=开始;
返回基地.OnPointerDown(发送方,e);
}
/ / /<摘要>
/ / /覆盖的指针移动事件
/ / /设置新的鼠标点到变量
/ / /做一些数学对象创建一个圆(宽/高保持相等)
/ / /> < /总结
公共覆盖boolOnPointerMove (AnnContainer发送方,AnnPointerEventArgs e)
{
结束= e.Location;
AnnCircleObject圆= (AnnCircleObject) TargetObject;
双x =(结束。X - begin.X);
双y = Math.Abs(结束。Y - begin.Y);
双scaleX = 1;
双写入scaleY = 1;
如果(x < y)
scaleX = y / x;
其他的
写入scaleY = x / y;
圆。矩形= LeadRectD.Create(开始。X,开始。Y, Math.Abs(结束。X - begin.X) * Math.Abs (scaleX) Math.Abs(结束。Y - begin.Y) * Math.Abs(写入scaleY));
无效(LeadRectD.Empty);
返回真正的;
}
}
}
将以下代码添加到AnnCircleObject
类:
使用Leadtools.Annotations.Engine;
名称空间Create_a_Custom_Annotation
{
类AnnCircleObject: AnnEllipseObject
{
/ /设置UserObjectID id
公共常量intCircleObjectId = UserObjectId;
/ / /<摘要>
/ / /对象的构造函数
/ / /设置对象的id对象id
/ / /> < /总结
公共AnnCircleObject ()
:基地()
{
SetId (CircleObjectId);
标签=零;
}
受保护的覆盖AnnObject Create ()
{
返回新AnnCircleObject ();
}
}
}
将以下代码添加到AnnCircleObjectRenderer
类:
使用System.Collections.Generic;
使用Leadtools.Annotations.Rendering;
使用Leadtools.Annotations.Automation;
使用Leadtools.Annotations.Engine;
使用Leadtools;
名称空间Create_a_Custom_Annotation
{
类AnnCircleObjectRenderer: AnnEllipseObjectRenderer
{
/ / /<摘要>
/ / /渲染器的构造函数
/ / /得到了椭圆对象渲染器和循环使用相同的风格
/ / /> < /总结
公共AnnCircleObjectRenderer (AnnAutomationManager经理)
:基地()
{
IAnnObjectRenderer annEllipseObjRenderer = manager.RenderingEngine.Renderers [AnnObject.EllipseObjectId];
LabelRenderer = annEllipseObjRenderer.LabelRenderer;
LocationsThumbStyle = annEllipseObjRenderer.LocationsThumbStyle;
RotateCenterThumbStyle = annEllipseObjRenderer.RotateCenterThumbStyle;
RotateGripperThumbStyle = annEllipseObjRenderer.RotateGripperThumbStyle;
/ /下面的代码片段改变注释的缩略图的大小
/ / LeadSizeD newThumbSize = LeadSizeD。创建(300、300);/ /新的缩略图的大小,改变是必要的
/ / LocationsThumbStyle。大小= newThumbSize;
/ / RotateCenterThumbStyle。大小= newThumbSize;
/ / RotateGripperThumbStyle。大小= newThumbSize;
}
/ / /<摘要>
/ / /覆盖RenderThumbs方法
/ / /通过拇指和删除顶部底部左和右拇指所以不能改变从一个圆
/ / /> < /总结
公共覆盖无效RenderThumbs (AnnContainerMapper mapper LeadPointD [] thumbLocations, AnnFixedStateOperations操作)
{
列出< LeadPointD > newThumbs =新列表< LeadPointD > ();
为(int我= 0;我< thumbLocations.Length;我+ = 2)
newThumbs.Add (thumbLocations[我]);
基地.RenderThumbs (mapper newThumbs.ToArray()操作);
}
}
}
右键单击Form1.cs
在解决方案资源管理器并选择视图代码以弹出形式背后的代码。
添加内InitAnnotations ()
方法CreateCustomObject (automationManager);
下面的代码,var automationManagerHelper = new automationManagerHelper (automationManager);
如下:
varautomationManagerHelper =新AutomationManagerHelper (automationManager);
CreateCustomObject (automationManager);
在添加一个新的方法Form1
类命名CreateCustomObject (AnnAutomationManager annManager)
。在调用此方法InitAnnotations ()
方法如上所示。将以下代码添加到新方法:
私人无效CreateCustomObject (AnnAutomationManager annManager)
{
/ /创建圆形对象,分配设计师,设置工具栏图像,然后将其添加到管理器和渲染引擎
AnnAutomationObject circleAutomationObject =新AnnAutomationObject ();
circleAutomationObject。Id = AnnCircleObject.CircleObjectId;
circleAutomationObject。Name =“圆”;
circleAutomationObject。ToolBarToolTipText = circleAutomationObject.Name;
circleAutomationObject。DrawDesignerType =typeof(AnnCircleDrawDesigner);
circleAutomationObject。EditDesignerType =typeof(AnnRectangleEditDesigner);
circleAutomationObject。RunDesignerType =typeof(AnnRunDesigner);
circleAutomationObject。ObjectTemplate =新AnnCircleObject ();
circleAutomationObject。ToolBarImage =新位图(typeof(Form1),“Resources.Create-a-Custom-Annotation-Circle-Icon.png”);
circleAutomationObject。快捷菜单=新Leadtools.Annotations.WinForms.ObjectContextMenu ();
annManager.Objects.Add (circleAutomationObject);
annManager.RenderingEngine.Renderers.Add (AnnCircleObject.CircleObjectId新AnnCircleObjectRenderer (annManager));
}
按运行项目F5,或通过选择调试- >开始调试。
如果是正确的步骤,应用程序运行和任何注释可以选择工具栏上的加载文档。选择黑色圆图标,单击并拖动文件添加自定义注释。下面的图片显示了文档查看器与注释工具栏右边的观众。
本教程演示了如何使用AutomationManager
,AutomationManagerHelper
,AnnAutomation
,AnnAutomationObject
类的主题是
绘制和编辑控制自动化和自定义注释。