绘制

算子列表 ↓

本章介绍了允许用户手动绘制几何图形的算子。这些算子需要鼠标交互,通常会阻塞应用程序直至鼠标交互完成。若需实现非阻塞式的交互式几何图形创建,HALCON 还提供了绘制对象算子,详见 图形 / 对象

总体目标

画算子 draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region, draw_xlddraw_xldDrawXldDrawXldDrawXlddraw_xlddraw_xld_moddraw_xld_modDrawXldModDrawXldModDrawXldModdraw_xld_moddraw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbsdraw_nurbsdraw_nurbs_moddraw_nurbs_modDrawNurbsModDrawNurbsModDrawNurbsModdraw_nurbs_moddraw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterpdraw_nurbs_interpdraw_nurbs_interp_moddraw_nurbs_interp_modDrawNurbsInterpModDrawNurbsInterpModDrawNurbsInterpModdraw_nurbs_interp_mod,以及 drag_region1drag_region1DragRegion1DragRegion1DragRegion1drag_region1drag_region2drag_region2DragRegion2DragRegion2DragRegion2drag_region2drag_region3drag_region3DragRegion3DragRegion3DragRegion3drag_region3 均返回图标对象。其余所有画算子则返回创建相应形状区域或轮廓所需的几何参数(参见表格)。大多数画算子均提供修饰变体,允许用户指定所画形状的初始参数。

在缓冲窗口中绘制

由于画算子依赖鼠标交互,它们通常无法在缓冲窗口(参见 open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window)中使用,因此应改用绘制对象。不过某些算子(参见表格)可在缓冲窗口中使用,这些算子通过鼠标状态进行控制。为使用这些算子(并避免死锁),应用程序需通过 send_mouse_double_click_eventsend_mouse_double_click_eventSendMouseDoubleClickEventSendMouseDoubleClickEventSendMouseDoubleClickEventsend_mouse_double_click_eventsend_mouse_down_eventsend_mouse_down_eventSendMouseDownEventSendMouseDownEventSendMouseDownEventsend_mouse_down_eventsend_mouse_drag_eventsend_mouse_drag_eventSendMouseDragEventSendMouseDragEventSendMouseDragEventsend_mouse_drag_eventsend_mouse_up_eventsend_mouse_up_eventSendMouseUpEventSendMouseUpEventSendMouseUpEventsend_mouse_up_event 事件提供鼠标状态及修饰键状态(同样使用 send_mouse_drag_eventsend_mouse_drag_eventSendMouseDragEventSendMouseDragEventSendMouseDragEventsend_mouse_drag_event 实现),而画算子本身必须在另一个线程中运行。使用画算子期间,图像部分不得被修改。

绘制算子 输出 生成对象 缓冲窗口中的工作
draw_pointdraw_pointDrawPointDrawPointDrawPointdraw_point RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn gen_cross_contour_xldgen_cross_contour_xldGenCrossContourXldGenCrossContourXldGenCrossContourXldgen_cross_contour_xld
draw_linedraw_lineDrawLineDrawLineDrawLinedraw_line Row1Row1Row1Row1row1row_1, Column1Column1Column1Column1column1column_1, Row2Row2Row2Row2row2row_2, Column2Column2Column2Column2column2column_2 gen_contour_polygon_xldgen_contour_polygon_xldGenContourPolygonXldGenContourPolygonXldGenContourPolygonXldgen_contour_polygon_xld
draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1 Row1Row1Row1Row1row1row_1, Column1Column1Column1Column1column1column_1, Row2Row2Row2Row2row2row_2, Column2Column2Column2Column2column2column_2 gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1GenRectangle1gen_rectangle1
draw_rectangle2draw_rectangle2DrawRectangle2DrawRectangle2DrawRectangle2draw_rectangle2 RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Length1Length1Length1Length1length1length_1, Length2Length2Length2Length2length2length_2 gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2gen_rectangle2, gen_rectangle2_contour_xldgen_rectangle2_contour_xldGenRectangle2ContourXldGenRectangle2ContourXldGenRectangle2ContourXldgen_rectangle2_contour_xld
draw_circledraw_circleDrawCircleDrawCircleDrawCircledraw_circle RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, RadiusRadiusRadiusRadiusradiusradius gen_circlegen_circleGenCircleGenCircleGenCirclegen_circle, gen_circle_contour_xldgen_circle_contour_xldGenCircleContourXldGenCircleContourXldGenCircleContourXldgen_circle_contour_xld
draw_ellipsedraw_ellipseDrawEllipseDrawEllipseDrawEllipsedraw_ellipse RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Radius1Radius1Radius1Radius1radius1radius_1, Radius2Radius2Radius2Radius2radius2radius_2 gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipsegen_ellipse, gen_ellipse_contour_xldgen_ellipse_contour_xldGenEllipseContourXldGenEllipseContourXldGenEllipseContourXldgen_ellipse_contour_xld
draw_xlddraw_xldDrawXldDrawXldDrawXlddraw_xld ContourContourContourContourcontourcontour -
draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region RegionRegionRegionRegionregionregion -
draw_polygondraw_polygonDrawPolygonDrawPolygonDrawPolygondraw_polygon RegionRegionRegionRegionregionregion -
draw_nurbsdraw_nurbsDrawNurbsDrawNurbsDrawNurbsdraw_nurbs ContourContourContourContourcontourcontour, RowsRowsRowsRowsrowsrows, ColumnsColumnsColumnsColumnscolumnscolumns, WeightsWeightsWeightsWeightsweightsweights -
draw_nurbs_interpdraw_nurbs_interpDrawNurbsInterpDrawNurbsInterpDrawNurbsInterpdraw_nurbs_interp ContourContourContourContourcontourcontour, RowsRowsRowsRowsrowsrows, ColumnsColumnsColumnsColumnscolumnscolumns, KnotsKnotsKnotsKnotsknotsknots, TangentsTangentsTangentsTangentstangentstangents -
drag_region1drag_region1DragRegion1DragRegion1DragRegion1drag_region1 RegionRegionRegionRegionregionregion -
drag_region2drag_region2DragRegion2DragRegion2DragRegion2drag_region2 RegionRegionRegionRegionregionregion -
drag_region3drag_region3DragRegion3DragRegion3DragRegion3drag_region3 RegionRegionRegionRegionregionregion -

算子列表

drag_region1DragRegion1drag_region1DragRegion1drag_region1拖动区域1
区域的交互式移动。
drag_region2DragRegion2drag_region2DragRegion2drag_region2拖动区域2
具有定点规范的区域的交互式移动。
drag_region3DragRegion3drag_region3DragRegion3drag_region3拖动区域3
具有位置限制的区域的交互式移动。
draw_circleDrawCircledraw_circleDrawCircledraw_circle画圆
交互式绘制圆。
draw_circle_modDrawCircleModdraw_circle_modDrawCircleModdraw_circle_mod画圆模
交互式绘制圆。
draw_ellipseDrawEllipsedraw_ellipseDrawEllipsedraw_ellipse画椭圆
交互式绘制椭圆。
draw_ellipse_modDrawEllipseModdraw_ellipse_modDrawEllipseModdraw_ellipse_mod画椭圆模
交互式绘制椭圆。
draw_lineDrawLinedraw_lineDrawLinedraw_line画线
画一条线。
draw_line_modDrawLineModdraw_line_modDrawLineModdraw_line_mod画线模
画一条线。
draw_nurbsDrawNurbsdraw_nurbsDrawNurbsdraw_nurbs画非均匀有理B样条
交互式绘制一条非均匀有理 B 样条(Non-Uniform Rational B-Splines,NURBS)曲线。
draw_nurbs_interpDrawNurbsInterpdraw_nurbs_interpDrawNurbsInterpdraw_nurbs_interp画非均匀有理B样条插值
使用插值交互式绘制 NURBS 曲线。
draw_nurbs_interp_modDrawNurbsInterpModdraw_nurbs_interp_modDrawNurbsInterpModdraw_nurbs_interp_mod画非均匀有理B样条插值模
使用插值交互式修改 NURBS 曲线。
draw_nurbs_modDrawNurbsModdraw_nurbs_modDrawNurbsModdraw_nurbs_mod画非均匀有理B样条模
交互式修改 NURBS 曲线。
draw_pointDrawPointdraw_pointDrawPointdraw_point画点
画一个点。
draw_point_modDrawPointModdraw_point_modDrawPointModdraw_point_mod画点模
画一个点。
draw_polygonDrawPolygondraw_polygonDrawPolygondraw_polygon画多边形
I交互式绘制多边形行。
draw_rectangle1DrawRectangle1draw_rectangle1DrawRectangle1draw_rectangle1画矩形1
画一个平行于坐标轴的矩形。
draw_rectangle1_modDrawRectangle1Moddraw_rectangle1_modDrawRectangle1Moddraw_rectangle1_mod画矩形1模
画一个平行于坐标轴的矩形。
draw_rectangle2DrawRectangle2draw_rectangle2DrawRectangle2draw_rectangle2画矩形2
交互式绘制任何定向矩形。
draw_rectangle2_modDrawRectangle2Moddraw_rectangle2_modDrawRectangle2Moddraw_rectangle2_mod画矩形2模
交互式绘制任何定向矩形。
draw_regionDrawRegiondraw_regionDrawRegiondraw_region画区域
交互式绘制封闭区域。
draw_xldDrawXlddraw_xldDrawXlddraw_xld画扩展线描述
交互式绘制轮廓。
draw_xld_modDrawXldModdraw_xld_modDrawXldModdraw_xld_mod画扩展线描述模
交互式修改轮廓。