所以我想在现有的画布上绘制一个彩色(红色)区域,就像一个红色的镜头被放置在它上面,所以原始图像在下面仍然可见。
问题是我正在扩展一个画布来绘制它自己的图像,并且我正在它的顶部进行绘制。
我怎样才能做到这一点?
所以我想在现有的画布上绘制一个彩色(红色)区域,就像一个红色的镜头被放置在它上面,所以原始图像在下面仍然可见。
问题是我正在扩展一个画布来绘制它自己的图像,并且我正在它的顶部进行绘制。
我怎样才能做到这一点?
天真的解决SWT.Paint
方案是Canvas
向EventTable.hook()
表...)。因此,原始侦听器可能会在您的侦听器之前或之后运行。
一个更好的解决方案 - 我没有尝试过,但相信可以工作 - 应该是Composite
在原来的顶部添加一个新的Canvas
,然后将你的监听器添加到这个小部件,因为任何Paint
新的监听Composite
器都保证在所有监听器之后运行Canvas
本身。记得
Size
侦听器以Canvas
确保 的大小Composite
始终正确setBackgroundMode(SWT.INHERIT_FORCE)
在Canvas
In your Canvas paint()
method,
gc.setAlpha(100)
//decide your valuegc.fillRectangle(rect)
//rect is client area of the canvasI believe you should get what you are looking for.
将 alpha 值设置为画布只会使颜色变暗,不会使其透明。使用 shell.setAlpha(x); 只有在 shell 中才能实现真正的透明 gui;