正确方法:使用带 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% 不透明:
CC60% 不透明:
9950% 半透明:
80(例如'#00ff0080'半透明绿)30% 不透明:
4D10% 不透明:
1A0% 全透明:
00
注意事项
版本限制:这个功能需要 HALCON 12 或更高版本。如果你使用的是更老的版本(如 HALCON 10/11),
dev_display不支持 Alpha 通道,你只能通过上一条回复中的“方法二”(修改图像像素数据)来实现效果。叠加顺序:一定要先
dev_display(Image),然后再dev_display(Region)。如果反过来,Region 会被图片盖住。C# / C++ 调用:逻辑是一样的,在调用
SetColor时传入这个格式的字符串即可。