开始本教程中的示例项目门户网站之一注释。
要创建的对象是一个简单的三角形。这个对象有三个点三角形的结束点,它会使用一个中风的三角形边缘和内部填充。
添加一个新的c#类项目,并添加以下代码:
/ /三角形注释对象
公共类AnnTriangleObject: AnnPolylineObject
{
/ /对象ID,我们选择一个用户定义的值
公共常量intMyId = AnnObject.UserObjectId;
公共AnnTriangleObject ():
基地()
{
/ /设置一个ID
SetId (MyId);
/ /我们是closed-figure
空当=真正的;
}
/ /我们的友好名称
公共覆盖字符串FriendlyName
{
得到
{
返回“三角形”;
}
}
}
因为没有现有的画与我们的设计师可以使用AnnTriangleObject类,我们需要创建自己的:
/ /我们的设计师画
公共类AnnTriangleDrawDesigner: AnnDrawDesigner
{
公共AnnTriangleDrawDesigner (IAnnAutomationControl automationControl AnnContainer容器,AnnObject AnnObject):
基地(annObject automationControl、容器)
{
}
/ /覆盖指针事件,添加3点为三角形
公共覆盖boolOnPointerDown (AnnContainer发送方,AnnPointerEventArgs e)
{
/ /基类是否想要处理的事件
bool处理=基地.OnPointerDown(发送方,e);
如果(处理)
返回真正的;
/ /我们将左边按钮
如果(e。按钮! = AnnMouseButton.Left)
返回假;
/ /获取当前的点对象
AnnObject AnnObject =这.TargetObject;
intpointCount = annObject.Points.Count;
如果(pointCount < 3)
{
/ /添加当前点
annObject.Points.Add (e.Location);
/ /如果我们有0点,然后添加另一个。当我们移动指针,我们会的
/ /移动最后一点(在本例中)
如果(pointCount = = 0)
annObject.Points.Add (e.Location);
如果(pointCount = = 0)
{
如果(!这.StartWorking ())
返回真正的;
}
}
其他的
{
/ /我们有3点,我们完成了
这.EndWorking ();
}
返回真正的;
}
/ /覆盖指针移动事件
公共覆盖boolOnPointerMove (AnnContainer发送方,AnnPointerEventArgs e)
{
bool处理=基地.OnPointerMove(发送方,e);
/ /看看我们有分
/ /如果是这样,最后一点在对象移动到新位置
AnnObject AnnObject =这.TargetObject;
如果(annObject.Points。数> 0)
{
annObject.Points [annObject.Points。数- 1)= e.Location;
工作();
返回真正的;
}
返回假;
}
公共覆盖boolOnPointerUp (AnnContainer发送方,AnnPointerEventArgs e)
{
基地.OnPointerUp(发送方,e);
返回真正的;
}
}
接下来,我们需要添加自动化对象的三角形:
私人静态无效InitializeTriangleObject (AnnAutomationManagerHelper注释)
{
/ /创建一个新的自动化对象
AnnAutomationObject automationObj =新AnnAutomationObject ();
/ /设置对象ID
automationObj。Id = AnnTriangleObject.MyId;
automationObj。Name =“三角形”;
/ /设置它的设计师
automationObj。DrawDesignerType =typeof(AnnTriangleDrawDesigner);
automationObj。EditDesignerType =typeof(AnnPolylineEditDesigner);
automationObj。RunDesignerType =typeof(AnnRunDesigner);
/ /设置模板
AnnTriangleObject annObj =新AnnTriangleObject ();
/ /设置默认的中风
annObj。中风= AnnStroke.Create (AnnSolidColorBrush.Create (“红色”),LeadLengthD.Create (2));
annObj。填补= AnnSolidColorBrush.Create (“黄色”);
automationObj。ObjectTemplate = annObj;
/ /设置渲染器,AnnPolylineObject一样
IAnnObjectRenderer polylineRenderer = annotations.AutomationManager.RenderingEngine.Renderers [AnnObject.PolylineObjectId];
IAnnObjectRenderer渲染器=新AnnPolylineObjectRenderer ();
渲染器。LabelRenderer = polylineRenderer.LabelRenderer;
渲染器。LocationsThumbStyle = polylineRenderer.LocationsThumbStyle;
渲染器。RotateGripperThumbStyle = polylineRenderer.RotateGripperThumbStyle;
渲染器。RotateCenterThumbStyle = polylineRenderer.RotateCenterThumbStyle;
annotations.AutomationManager.RenderingEngine.Renderers [AnnTriangleObject。MyId] =渲染器;
/ /设置它的上下文菜单和工具栏的形象
AnnAutomationObjectExtData extData =新AnnAutomationObjectExtData ();
extData。快捷菜单=新Leadtools.Annotations.WinForms.ObjectContextMenu ();
extData。DrawCursor = Cursors.Cross;
位图的位图=新位图(System.Drawing.Imaging.PixelFormat.Format32bppArgb 24日24日);
使用(图形g = Graphics.FromImage(位图))
{
g.Clear (Color.Transparent);
g.DrawLine(笔。2黑色,12日,22日,22);
g.DrawLine(笔。2黑色,22日,22日,22);
g.DrawLine(笔。黑色,2,22日,12日,2);
}
extData。ToolBarImage =位图;
extData。ToolBarToolTipText =“三角形”;
automationObj。用户数据= extData;
annotations.AutomationManager.Objects.Add (automationObj);
}
最后,修改原始代码是这样的:
/ /创建助手
_annotations =新AnnAutomationManagerHelper (automationManager);
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ /创建我们的三角形自动化对象
InitializeTriangleObject (_annotations);
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ /创建工具栏并将其添加到我们的形式
_annotations.CreateToolBar ();
工具栏工具栏= _annotations.ToolBar;
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。