attach_drawing_object_to_windowT_attach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_window附加绘图对象到窗口(算子)
名称
attach_drawing_object_to_windowT_attach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_window — 将现有绘制对象附加到 HALCON 窗口。
签名
描述
attach_drawing_object_to_windowattach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_window 将绘图对象 DrawHandleDrawHandleDrawHandleDrawHandledrawHandledraw_handle
附加到 WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle 指定的 HALCON 窗口。附加到窗口后,该绘图对象将在指定窗口中显示。用户可在 HALCON 窗口中交互式修改该绘图对象。当使用 set_drawing_object_paramsset_drawing_object_paramsSetDrawingObjectParamsSetDrawingObjectParamsSetDrawingObjectParamsset_drawing_object_params 算子修改对象属性时,窗口将自动更新。
当两个或多个绘图对象重叠时,双击当前选中的绘图对象将使焦点移至下一个绘图对象。
此外,在使用任何语言接口时,均可对用户交互导致的绘图对象修改作出响应。更多详情请参阅 set_drawing_object_callbackset_drawing_object_callbackSetDrawingObjectCallbackSetDrawingObjectCallbackSetDrawingObjectCallbackset_drawing_object_callback 的文档。
可通过算子 detach_drawing_object_from_windowdetach_drawing_object_from_windowDetachDrawingObjectFromWindowDetachDrawingObjectFromWindowDetachDrawingObjectFromWindowdetach_drawing_object_from_window 将绘图对象从当前窗口移除。
当绘图对象附加到窗口后,所有由图形算子,即 disp_objdisp_objDispObjDispObjDispObjdisp_obj、disp_regiondisp_regionDispRegionDispRegionDispRegiondisp_region、disp_imagedisp_imageDispImageDispImageDispImagedisp_image 和 disp_xlddisp_xldDispXldDispXldDispXlddisp_xld,显示的 HALCON 对象,都会在内部存储于与 WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle 关联的图形堆中,以便与附加的绘图对象共同显示。这些对象将持续保留在堆中,直至用户调用 clear_windowclear_windowClearWindowClearWindowClearWindowclear_window 或窗口被关闭。
该图形堆的大小可分别通过 get_systemget_systemGetSystemGetSystemGetSystemget_system 和 set_systemset_systemSetSystemSetSystemSetSystemset_system 进行查询和修改。更多详细信息请参阅相应的文档参考。
注意
请注意,使用任何主动探测事件队列的同步算子,例如 get_mbuttonget_mbuttonGetMbuttonGetMbuttonGetMbuttonget_mbutton 或 read_charread_charReadCharReadCharReadCharread_char,都会与绘图对象的交互产生冲突。若需读取光标状态,请查阅所选框架的文档以获取合适的、非侵入式替代方案。
此外,基于事件的功能不应与原有的阻塞算子 draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1、draw_rectangle2draw_rectangle2DrawRectangle2DrawRectangle2DrawRectangle2draw_rectangle2、draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region、draw_xlddraw_xldDrawXldDrawXldDrawXlddraw_xld 或
draw_circledraw_circleDrawCircleDrawCircleDrawCircledraw_circle 同时使用。由于这些算子会主动获取发送至 HALCON 窗口的所有事件,因此会与基于事件的功能产生冲突。
在 UNIX/Linux 环境下工作时,必须启用 Xlib 的多线程支持功能。实现方法是在调用 Xlib 库的任何其他函数之前,先调用 XInitThreads() 函数。这意味着您需要在调用所选图形开发环境的任何其他函数或方法之前调用该函数。更多详细信息请参阅相应手册页中 XInitThreads() 函数的文档说明。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (输入控制) window → HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
窗口句柄。
DrawHandleDrawHandleDrawHandleDrawHandledrawHandledraw_handle (输入控制) drawing_object → HDrawingObject, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
绘图对象的句柄。
结果
attach_drawing_object_to_windowattach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_window 返回 2 ( H_MSG_TRUE ),如果 DrawHandleDrawHandleDrawHandleDrawHandledrawHandledraw_handle
和 WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle 是有效的。否则将抛出异常。
可能的前趋
create_drawing_object_rectangle1create_drawing_object_rectangle1CreateDrawingObjectRectangle1CreateDrawingObjectRectangle1CreateDrawingObjectRectangle1create_drawing_object_rectangle1,
create_drawing_object_xldcreate_drawing_object_xldCreateDrawingObjectXldCreateDrawingObjectXldCreateDrawingObjectXldcreate_drawing_object_xld,
create_drawing_object_circle_sectorcreate_drawing_object_circle_sectorCreateDrawingObjectCircleSectorCreateDrawingObjectCircleSectorCreateDrawingObjectCircleSectorcreate_drawing_object_circle_sector,
create_drawing_object_ellipse_sectorcreate_drawing_object_ellipse_sectorCreateDrawingObjectEllipseSectorCreateDrawingObjectEllipseSectorCreateDrawingObjectEllipseSectorcreate_drawing_object_ellipse_sector,
create_drawing_object_ellipsecreate_drawing_object_ellipseCreateDrawingObjectEllipseCreateDrawingObjectEllipseCreateDrawingObjectEllipsecreate_drawing_object_ellipse,
create_drawing_object_linecreate_drawing_object_lineCreateDrawingObjectLineCreateDrawingObjectLineCreateDrawingObjectLinecreate_drawing_object_line,
create_drawing_object_rectangle2create_drawing_object_rectangle2CreateDrawingObjectRectangle2CreateDrawingObjectRectangle2CreateDrawingObjectRectangle2create_drawing_object_rectangle2,
create_drawing_object_circlecreate_drawing_object_circleCreateDrawingObjectCircleCreateDrawingObjectCircleCreateDrawingObjectCirclecreate_drawing_object_circle,
create_drawing_object_textcreate_drawing_object_textCreateDrawingObjectTextCreateDrawingObjectTextCreateDrawingObjectTextcreate_drawing_object_text
可能的后继
detach_drawing_object_from_windowdetach_drawing_object_from_windowDetachDrawingObjectFromWindowDetachDrawingObjectFromWindowDetachDrawingObjectFromWindowdetach_drawing_object_from_window,
get_drawing_object_paramsget_drawing_object_paramsGetDrawingObjectParamsGetDrawingObjectParamsGetDrawingObjectParamsget_drawing_object_params,
get_drawing_object_iconicget_drawing_object_iconicGetDrawingObjectIconicGetDrawingObjectIconicGetDrawingObjectIconicget_drawing_object_iconic
另见
set_drawing_object_callbackset_drawing_object_callbackSetDrawingObjectCallbackSetDrawingObjectCallbackSetDrawingObjectCallbackset_drawing_object_callback,
get_drawing_object_iconicget_drawing_object_iconicGetDrawingObjectIconicGetDrawingObjectIconicGetDrawingObjectIconicget_drawing_object_iconic,
get_drawing_object_paramsget_drawing_object_paramsGetDrawingObjectParamsGetDrawingObjectParamsGetDrawingObjectParamsget_drawing_object_params
模块
基础