zjx
zjx
发布于 2025-12-02 / 7 阅读
0
0

Halcon如何把region弄成类透明

正确方法:使用带 Alpha 通道的颜色代码

你需要使用 #RRGGBBAA 格式的十六进制颜色代码来代替普通的 'red''green'

  • 格式'#RRGGBBAA'

  • RR, GG, BB:红、绿、蓝分量(00-FF)

  • AA:透明度(Alpha),00 是全透明,FF 是不透明

代码示例

代码段

read_image (Image, 'patras')
gen_circle (Region, 200, 200, 100)

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)

dev_set_draw ('fill')

* --- 关键修改在这里 ---
* 设置颜色为红色,但只有 50% 不透明度
* RR=FF (红), GG=00, BB=00, AA=80 (十六进制的80等于十进制的128,约50%透明度)
dev_set_color ('#ff000080')

dev_display (Region)

常用透明度对照表 (Hex)

如果你不熟悉十六进制,可以参考这个表来设置最后两位的 AA 值:

  • 100% 不透明 (默认): FF (例如 '#ff0000ff' 等同于 'red')

  • 80% 不透明: CC

  • 60% 不透明: 99

  • 50% 半透明: 80 (例如 '#00ff0080' 半透明绿)

  • 30% 不透明: 4D

  • 10% 不透明: 1A

  • 0% 全透明: 00

注意事项

  1. 版本限制:这个功能需要 HALCON 12 或更高版本。如果你使用的是更老的版本(如 HALCON 10/11),dev_display 不支持 Alpha 通道,你只能通过上一条回复中的“方法二”(修改图像像素数据)来实现效果。

  2. 叠加顺序:一定要先 dev_display(Image),然后再 dev_display(Region)。如果反过来,Region 会被图片盖住。

  3. C# / C++ 调用:逻辑是一样的,在调用 SetColor 时传入这个格式的字符串即可。


评论