创建一个定制的注释和文档查看器——WinForms c#

LEADTOOLS包括30多个内置注释对象可以扩展来创建自定义注释对象。本教程演示了如何创建一个定制的圆注释的AnnEllipseObject类在c# WinForms应用程序中使用文档查看器。

概述
总结 本教程涵盖了自动化和自定义注释功能在c# WinForms应用程序中使用文档查看器。
完成时间 45分钟
Visual Studio项目 下载教程项目(KB) 14日
平台 WinForms c#应用程序
IDE Visual Studio 2019中,2022年
开发许可 下载LEADTOOLS
试试用另一种语言

所需的知识

熟悉的基本步骤,创建一个项目,初始化文档查看器,并将注释添加到文档查看器检查下面的教程,之前的工作创建一个定制的注释和文档查看器——WinForms c#教程。

创建项目并添加LEADTOOLS引用

从项目中创建的副本绘制和编辑文档注释教程。如果项目不可用,按照这个教程中的步骤创建它。

的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。对于这个项目,需要下面的引用。

如果使用NuGet引用,本教程需要以下NuGet包和他们的依赖关系:

如果使用本地DLL的引用,下面的DLL是必要的。dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64:

对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序

设置许可文件

许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可教程

有两种类型的运行时许可证:

添加自定义注释来注释工具栏面板

添加了引用、许可设置和文档查看器初始化,可以开始编码。

Form1.cs解决方案资源管理器。右键单击设计窗口并选择视图代码或新闻F7以弹出形式背后的代码。

添加以下语句的使用块顶部:

c#
使用系统;使用先;使用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文件夹,突出添加,然后单击类……

将类添加到文件夹

添加三个新类:

请注意

一定要改变这些类的名称空间为每个匹配Form1.cs中的名称空间。

将以下代码添加到AnnCircleDrawDesigner类:

c#
使用系统;使用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类:

c#
使用Leadtools.Annotations.Engine;名称空间Create_a_Custom_Annotation{AnnCircleObject: AnnEllipseObject{/ /设置UserObjectID id公共常量intCircleObjectId = UserObjectId;/ / /<摘要>/ / /对象的构造函数/ / /设置对象的id对象id/ / /> < /总结公共AnnCircleObject ():基地(){SetId (CircleObjectId);标签=;}受保护的覆盖AnnObject Create (){返回AnnCircleObject ();}}}

将以下代码添加到AnnCircleObjectRenderer类:

c#
使用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);如下:

c#
varautomationManagerHelper =AutomationManagerHelper (automationManager);CreateCustomObject (automationManager);

在添加一个新的方法Form1类命名CreateCustomObject (AnnAutomationManager annManager)。在调用此方法InitAnnotations ()方法如上所示。将以下代码添加到新方法:

c#
私人无效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.CircleObjectIdAnnCircleObjectRenderer (annManager));}

运行该项目

按运行项目F5,或通过选择调试- >开始调试。

如果是正确的步骤,应用程序运行和任何注释可以选择工具栏上的加载文档。选择黑色圆图标,单击并拖动文件添加自定义注释。下面的图片显示了文档查看器与注释工具栏右边的观众。

是画在一个文档显示出一些注释

总结

本教程演示了如何使用AutomationManager,AutomationManagerHelper,AnnAutomation,AnnAutomationObject类的主题是绘制和编辑控制自动化和自定义注释。

另请参阅

iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2023领先的技术公司。保留所有权利。