从中创建的项目开始在图像上绘制和编辑注释.
正在创建的对象是一个简单的三角形。这个对象将有三个点作为三角形的端点,它将为三角形的边缘使用描边,为内部使用填充。
向项目中添加一个新的c#类,并添加以下代码:
//三角形注释对象
公共类AnnTriangleObject: AnnPolylineObject
{
//对象ID,让我们选择一个用户定义的值
公共常量intMyId = AnnObject.UserObjectId;
公共AnnTriangleObject ():
基地()
{
//设置ID
SetId (MyId);
//我们是一个封闭的人物
空当=真正的;
}
//我们友好的名字
公共覆盖字符串FriendlyName
{
得到
{
返回“三角形”;
}
}
}
由于没有现有的绘图设计器,可以与我们的AnnTriangleObject类,我们需要创建自己的:
//我们的绘图设计师
公共类AnnTriangleDrawDesigner: AnnDrawDesigner
{
公共antriangledrawdesigner (IAnnAutomationControl automationControl, AnnContainer container):
基地(automationControl, container, annObject)
{
}
//覆盖指针向下事件并为我们的三角形添加3个点
公共覆盖保龄球OnPointerDown(AnnContainer sender, AnnPointerEventArgs e)
{
//查看基类是否想要处理该事件
保龄球处理=基地.OnPointerDown(发送方,e);
如果(处理)
返回真正的;
//我们只处理左键
如果(e.Button != AnnMouseButton.Left)
返回假;
//获取对象中当前的点数
AnnObject AnnObject =这.TargetObject;
intpointCount = annObject.Points.Count;
如果(pointCount < 3)
{
//添加当前点
annObject.Points.Add (e.Location);
//如果我们有0分,那么再加1分。当我们移动指针时,我们会
//移动最后一个点(在本例中为秒)
如果(pointCount == 0)
annObject.Points.Add (e.Location);
如果(pointCount == 0)
{
如果(!这.StartWorking ())
返回真正的;
}
}
其他的
{
//我们有3分,我们结束了
这.EndWorking ();
}
返回真正的;
}
//覆盖指针移动事件
公共覆盖保龄球OnPointerMove(AnnContainer sender, AnnPointerEventArgs e)
{
保龄球处理=基地.OnPointerMove(发送方,e);
//看我们是否有积分
//如果是,将对象中的最后一点移动到这个新位置
AnnObject AnnObject =这.TargetObject;
如果(annObject.Points。计数> 0)
{
annObject.Points [annObject.Points。计数- 1]= e.位置;
工作();
返回真正的;
}
返回假;
}
公共覆盖保龄球OnPointerUp(AnnContainer sender, AnnPointerEventArgs e)
{
基地.OnPointerUp(发送方,e);
返回真正的;
}
}
接下来,我们需要为Triangle添加自动化对象:
私人静态无效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。描边= AnnSolidColorBrush.Create(“红色”), LeadLengthD.Create (2));
annObj。填充= AnnSolidColorBrush。创建(“黄色”);
automationObj。ObjectTemplate = annObj;
//设置我们的渲染器,和AnnPolylineObject一样
IAnnObjectRenderer polylineRenderer = annotations.AutomationManager.RenderingEngine.Renderers[AnnObject.PolylineObjectId];
IAnnObjectRenderer renderer =新AnnPolylineObjectRenderer ();
渲染器。LabelRenderer = polylinerender .LabelRenderer;
渲染器。LocationsThumbStyle = polylinerender .LocationsThumbStyle;
渲染器。RotateGripperThumbStyle = polylinerender .RotateGripperThumbStyle;
渲染器。RotateCenterThumbStyle = polylinerender .RotateCenterThumbStyle;
annotations.AutomationManager.RenderingEngine.Renderers [AnnTriangleObject。MyId] =渲染器;
//设置它的上下文菜单和工具栏图像
AnnAutomationObjectExtData extData =新AnnAutomationObjectExtData ();
extData。快捷菜单=新Leadtools.Annotations.WinForms.ObjectContextMenu ();
extData。DrawCursor = cursor . cross;
位图位图=新位图(24,24,system . drawing . image . pixelformat . format32bppargb);
使用(图形g = Graphics. fromimage(位图))
{
g.Clear (Color.Transparent);
g.DrawLine(笔。黑色,12,2,22,22);
g.DrawLine(笔。黑色,22,22,22);
g.DrawLine(笔。黑色,2,22,12,2);
}
extData。ToolBarImage =位图;
extData。ToolBarToolTipText =“三角形”;
automationObj。UserData = extData;
annotations.AutomationManager.Objects.Add (automationObj);
}
最后,像这样修改原始代码:
//创建helper
_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
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。