所以我想在现有的画布上绘制一个彩色(红色)区域,就像在它上面放置一个红色的镜片一样,原来的图像仍然可以在下面看到。
问题在于我正在扩展一个绘制它自己图像的画布,而我正在绘制它的顶部。
我该怎么做?
答案 0 :(得分:1)
天真的解决方案是向SWT.Paint
添加一个Canvas
事件监听器,因为我们不知道对侦听器的调用顺序会导致问题(请查看{{在添加到表的末尾之前,它将重用侦听器表中的旧槽...)。因此,原始侦听器可能会在侦听器之前或之后运行。
一个更好的解决方案 - 我没有尝试,但相信可行 - 可以在原始EventTable.hook()
之上添加新的Composite
,然后将您的监听器添加到此小部件中新Canvas
的{{1}}侦听器保证在Paint
本身的所有侦听器之后运行。记得
Composite
添加Canvas
监听器,以确保Size
的大小始终正确Canvas
Composite
答案 1 :(得分:1)
在Canvas paint()
方法中,
gc.setAlpha(100)
//决定你的价值gc.fillRectangle(rect)
// rect是画布的客户区域我相信你应该得到你想要的东西。
答案 2 :(得分:-1)
将Alpha值设置为画布只会使颜色变暗并且不会使其透明。通过使用shell.setAlpha(x);
,实际透明gui只能使用shell