Skip to content

attach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_windowT_attach_drawing_object_to_window🔗

Short description🔗

attach_drawing_object_to_windowAttachDrawingObjectToWindowAttachDrawingObjectToWindowattach_drawing_object_to_windowT_attach_drawing_object_to_window — Attach an existing drawing object to a HALCON window.

Signature🔗

attach_drawing_object_to_window( window WindowHandle, drawing_object DrawHandle )void AttachDrawingObjectToWindow( const HTuple& WindowHandle, const HTuple& DrawHandle )static void HOperatorSet.AttachDrawingObjectToWindow( HTuple windowHandle, HTuple drawHandle )def attach_drawing_object_to_window( window_handle: HHandle, draw_handle: HHandle ) -> None

Herror T_attach_drawing_object_to_window( const Htuple WindowHandle, const Htuple DrawHandle )

void HWindow::AttachDrawingObjectToWindow( const HDrawingObject& DrawHandle ) const

void HWindow.AttachDrawingObjectToWindow( HDrawingObject drawHandle )

Description🔗

attach_drawing_object_to_windowAttachDrawingObjectToWindow attaches the drawing object DrawHandledrawHandledraw_handle to the HALCON window specified in WindowHandlewindowHandlewindow_handle. When attached to a window the drawing object is displayed in the specified window. The drawing object can be modified interactively in the HALCON window. The window is automatically updated when the objects properties are modified using the operator set_drawing_object_paramsSetDrawingObjectParams.

When two or more drawing objects overlap, a double-click on the currently selected drawing object will shift the focus to the next drawing object.

Furthermore it is possible to react to modifications of the drawing object caused by user interaction when using any of the language interface. Please see the documentation of set_drawing_object_callbackSetDrawingObjectCallback for more details.

The drawing object can be removed from the current window with the operator detach_drawing_object_from_windowDetachDrawingObjectFromWindow.

As soon as a drawing object is attached to the window, each HALCON object which is displayed by any of the graphical operators, namely disp_objDispObj, disp_regionDispRegion, disp_imageDispImage and disp_xldDispXld, is stored internally in a graphical stack associated with the WindowHandlewindowHandlewindow_handle, so that they can be displayed together with the attached drawing object. These remain in the stack until the user calls clear_windowClearWindow or the window is closed.

The size of this graphical stack can be queried and modified with get_systemGetSystem and set_systemSetSystem, respectively. See the corresponding documentation reference for further details.

Attention🔗

Note that using any synchronous operator which actively probe the event queue, e.g., get_mbuttonGetMbutton or read_charReadChar, will conflict with the interaction with the drawing objects. In case you need to read the state of the cursor, please refer to the documentation of your framework of choice for an appropriate, non-invasive alternative.

Furthermore, the event based functionality should not be used together with the former blocking operators draw_rectangle1DrawRectangle1, draw_rectangle2DrawRectangle2, draw_regionDrawRegion, draw_xldDrawXld or draw_circleDrawCircle. They conflict with the event based functionality, since they actively fetch all events sent to the HALCON window.

When working under UNIX/Linux it is necessary to turn on the support for multithreading in the Xlib. This is achieved by calling the function XInitThreads() before any other function of the Xlib library. This means that you need to call it before any other function or method of your graphical development environment of choice. See the documentation of the function XInitThreads() in the corresponding manual page for further details.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

Parameters🔗

WindowHandlewindowHandlewindow_handle (input_control) window → (handle)HTuple (HHandle)HWindow, HTuple (IntPtr)HHandleHtuple (handle)

Window handle.

DrawHandledrawHandledraw_handle (input_control) drawing_object → (handle)HTuple (HHandle)HDrawingObject, HTuple (IntPtr)HHandleHtuple (handle)

Handle of the drawing object.

Result🔗

attach_drawing_object_to_windowAttachDrawingObjectToWindow returns 2 (H_MSG_TRUE), if the DrawHandledrawHandledraw_handle and WindowHandlewindowHandlewindow_handle are valid. Otherwise an exception is raised.

Combinations with other operators🔗

Combinations

Possible predecessors

create_drawing_object_rectangle1CreateDrawingObjectRectangle1, create_drawing_object_xldCreateDrawingObjectXld, create_drawing_object_circle_sectorCreateDrawingObjectCircleSector, create_drawing_object_ellipse_sectorCreateDrawingObjectEllipseSector, create_drawing_object_ellipseCreateDrawingObjectEllipse, create_drawing_object_lineCreateDrawingObjectLine, create_drawing_object_rectangle2CreateDrawingObjectRectangle2, create_drawing_object_circleCreateDrawingObjectCircle, create_drawing_object_textCreateDrawingObjectText

Possible successors

detach_drawing_object_from_windowDetachDrawingObjectFromWindow, get_drawing_object_paramsGetDrawingObjectParams, get_drawing_object_iconicGetDrawingObjectIconic

See also

set_drawing_object_callbackSetDrawingObjectCallback, get_drawing_object_iconicGetDrawingObjectIconic, get_drawing_object_paramsGetDrawingObjectParams

Module🔗

Foundation