使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

使用右上角的选项卡切换到不同的编程语言。

dev_open_windowT_dev_open_windowDevOpenWindowDevOpenWindowdev_open_window开发打开窗口(算子)

名称

dev_open_windowT_dev_open_windowDevOpenWindowDevOpenWindowdev_open_window — 打开一个新的图形窗口。

签名

dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)

Herror T_dev_open_window(const Htuple Row, const Htuple Column, const Htuple Width, const Htuple Height, const Htuple Background, Htuple* WindowHandle)

void DevOpenWindow(const HTuple& Row, const HTuple& Column, const HTuple& Width, const HTuple& Height, const HTuple& Background, HTuple* WindowHandle)

void HWindow::DevOpenWindow(Hlong Row, Hlong Column, Hlong Width, Hlong Height, const HTuple& Background)

void HWindow::DevOpenWindow(Hlong Row, Hlong Column, Hlong Width, Hlong Height, Hlong Background)

static void HOperatorSet.DevOpenWindow(HTuple row, HTuple column, HTuple width, HTuple height, HTuple background, out HTuple windowHandle)

void HWindow.DevOpenWindow(int row, int column, int width, int height, HTuple background)

void HWindow.DevOpenWindow(int row, int column, int width, int height, int background)

def dev_open_window(row: int, column: int, width: int, height: int, background: Union[int, str]) -> HHandle

描述

dev_open_windowdev_open_windowDevOpenWindowDevOpenWindowDevOpenWindowdev_open_window 用于打开一个新的图形窗口,该窗口可用于显示图像、区域和直线等图形对象,也可用于输出文本。该窗口会自动成为活动窗口,这意味着所有输出(包括 dev_displaydev_displayDevDisplayDevDisplayDevDisplaydev_display 的输出以及运算结果的自动显示)都会重定向到此窗口。此时,激活 按钮上的指示灯会亮起。

每个图形窗口都通过其 WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle 进行标识。这个逻辑编号显示在图形窗口的标题栏中,并且是某些算子(如 disp_imagedisp_imageDispImageDispImageDispImagedisp_imagedisp_regiondisp_regionDispRegionDispRegionDispRegiondisp_regiondraw_circledraw_circleDrawCircleDrawCircleDrawCircledraw_circleget_mbuttonget_mbuttonGetMbuttonGetMbuttonGetMbuttonget_mbuttonwrite_stringwrite_stringWriteStringWriteStringWriteStringwrite_stringset_rgbset_rgbSetRgbSetRgbSetRgbset_rgb)所需的输入参数。

可以通过点击窗口边框上的 关闭 按钮、通过 可视化 菜单,或者调用 dev_close_windowdev_close_windowDevCloseWindowDevCloseWindowDevCloseWindowdev_close_window 来关闭图形窗口。

图形窗口的位置

默认情况下,图形窗口会在画布窗口内打开。如果不需要这样,请在 HDevelop 的 窗口 菜单中选择 恢复默认布局 -> 停靠图形窗口 选项。另请参阅 “HDevelop 用户指南” 中的 “画面窗口” 部分。

参数 RowRowRowRowrowrowColumnColumnColumnColumncolumncolumn 用于指定窗口的位置。其在画布上的参考点 (0, 0) 由一个十字标记表示。

对于浮动窗口,默认参考点是 HDevelop 主窗口的左上角。您可以更改此参考点,例如,使图形窗口的位置与屏幕的左上角对齐。要实现此操作,请打开 HDevelop 参数选择,并在 一般选项 下选择所需的 坐标原点

此外,您还可以通过 窗口打开偏移 设置调整窗口位置。这些偏移量值将分别加到行和列索引上。另请参阅 “HDevelop 用户指南” 中的“菜单 窗口打开偏移”。

图形窗口的可视化

创建的图形窗口的背景色将设置为在 BackgroundBackgroundBackgroundBackgroundbackgroundbackground 中指定的颜色。该参数不适用于算子 open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window。在该算子中,可通过预先调用 set_window_attr(::'background_color',Background:)set_window_attr("background_color",Background)SetWindowAttr("background_color",Background)SetWindowAttr("background_color",Background)SetWindowAttr("background_color",Background)set_window_attr("background_color",Background) 来实现相同的效果。

默认情况下,图形窗口(视口)中可见的图像区域设置为:图像显示时不进行裁剪,并完全适配窗口。当程序重置后、加载新程序时,或者当前图像的尺寸与之前显示的图像不同时,系统会根据此规则将图像区域调整为适配窗口大小。窗口大小不会自动调整,因此,如果图像的宽高比与窗口不同,图像会发生变形以适应窗口。这可以通过 窗口大小 菜单进行更改。

可见图像区域可通过滚动鼠标滚轮、使用 移动缩放 模式、通过 图像大小 菜单、借助 可视化参数 对话框中的 缩放 选项卡,或使用算子 dev_set_partdev_set_partDevSetPartDevSetPartDevSetPartdev_set_part 进行交互式调整。

图形窗口的显示参数可通过其右键菜单、可视化 菜单、可视化参数 对话框,或相应的 HDevelop 算子(如 dev_set_colordev_set_colorDevSetColorDevSetColorDevSetColordev_set_colordev_set_line_widthdev_set_line_widthDevSetLineWidthDevSetLineWidthDevSetLineWidthdev_set_line_widthdev_set_drawdev_set_drawDevSetDrawDevSetDrawDevSetDrawdev_set_draw)进行设置。根据 立即应用 参数选择的设置,参数更改将应用于最后显示的对象,或从现在起应用于所有后续对象。与标准的 HALCON 窗口算子不同,新设置也会应用于所有新创建的图形窗口。

图形窗口历史记录

每个图形窗口都会管理一个历史记录,其中包含自上次清除操作或显示完整图像以来已显示或更改的

当窗口被触发重绘时(例如在更改窗口大小之后),将使用此历史记录来重建完整的窗口内容。使用 HALCON 算子(如 disp_imagedisp_imageDispImageDispImageDispImagedisp_imagedisp_regiondisp_regionDispRegionDispRegionDispRegiondisp_region)、文本(write_stringwrite_stringWriteStringWriteStringWriteStringwrite_string)或几何对象(disp_linedisp_lineDispLineDispLineDispLinedisp_linedisp_circledisp_circleDispCircleDispCircleDispCircledisp_circle等)显示的其他图标输出属于历史记录的一部分,因此无法重新绘制。只有通过 HDevelop 算子 dev_displaydev_displayDevDisplayDevDisplayDevDisplaydev_display 或 HDevelop 操作(如双击图标)显示的图像、区域 和 XLD 对象类才属于历史记录的一部分。

点击 清除 按钮可清空图形窗口内容及窗口历史记录。也可通过使用算子 dev_clear_windowdev_clear_windowDevClearWindowDevClearWindowDevClearWindowdev_clear_window 实现此功能。此操作不会影响当前的显示参数。

更多信息

有关底层 HALCON 窗口的更多信息,请参阅 open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window。有关图形窗口的更多信息,请查阅 “HDevelop 用户指南”

注意

使用 HDevelop 的代码导出功能时,为该算子生成的代码的行为可能与相关的 HALCON 算子有所不同。有关将 HDevelop 图形算子导出为不同编程语言的代码的详细说明,请参阅 “HDevelop 用户指南” 中的 代码导出 -> 代码生成的通用方面 -> 图形窗口 一章。

参数

RowRowRowRowrowrow (输入控制)  rectangle.origin.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

左上角的行索引。

默认值: 0

值范围: 0 ≤ Row Row Row Row row row

最小增量: 1

建议增量: 1

ColumnColumnColumnColumncolumncolumn (输入控制)  rectangle.origin.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

左上角的列索引。

默认值: 0

值范围: 0 ≤ Column Column Column Column column column

最小增量: 1

建议增量: 1

WidthWidthWidthWidthwidthwidth (输入控制)  rectangle.extent.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

窗口的宽度。

默认值: 512

最小增量: 1

建议增量: 1

限制: Width > 0 || Width == -1

HeightHeightHeightHeightheightheight (输入控制)  rectangle.extent.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

窗口的高度。

默认值: 512

最小增量: 1

建议增量: 1

限制: Height > 0 || Height == -1

BackgroundBackgroundBackgroundBackgroundbackgroundbackground (输入控制)  integer HTupleUnion[int, str]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

新窗口的背景颜色。

默认值: 'black' "black" "black" "black" "black" "black"

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (输出控制)  window HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

窗口句柄。

示例(HDevelop)

dev_close_window ()
read_image (For5, 'for5')
get_image_size (For5, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (For5)
dev_set_lut ('rainbow')
dev_display (For5)
stop ()
dev_set_lut ('default')
dev_display (For5)
stop ()
dev_set_part (100, 100, 300, 300)
dev_display (For5)

结果

如果指定参数的值正确,dev_open_windowdev_open_windowDevOpenWindowDevOpenWindowDevOpenWindowdev_open_window 返回 2 (H_MSG_TRUE)。否则,将抛出一个异常并返回错误代码。

可能的后继

dev_displaydev_displayDevDisplayDevDisplayDevDisplaydev_display, dev_set_lutdev_set_lutDevSetLutDevSetLutDevSetLutdev_set_lut, dev_set_colordev_set_colorDevSetColorDevSetColorDevSetColordev_set_color, dev_set_drawdev_set_drawDevSetDrawDevSetDrawDevSetDrawdev_set_draw, dev_set_partdev_set_partDevSetPartDevSetPartDevSetPartdev_set_part

替代

open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window

另见

query_colorquery_colorQueryColorQueryColorQueryColorquery_color

模块

基础