所以我想在现有的画布上绘制一个彩色(红色)区域,就像一个红色的镜头被放置在它上面,所以原始图像在下面仍然可见。
问题是我正在扩展一个画布来绘制它自己的图像,并且我正在它的顶部进行绘制。
我怎样才能做到这一点?
所以我想在现有的画布上绘制一个彩色(红色)区域,就像一个红色的镜头被放置在它上面,所以原始图像在下面仍然可见。
问题是我正在扩展一个画布来绘制它自己的图像,并且我正在它的顶部进行绘制。
我怎样才能做到这一点?
天真的解决SWT.Paint方案是Canvas向EventTable.hook()表...)。因此,原始侦听器可能会在您的侦听器之前或之后运行。
一个更好的解决方案 - 我没有尝试过,但相信可以工作 - 应该是Composite在原来的顶部添加一个新的Canvas,然后将你的监听器添加到这个小部件,因为任何Paint新的监听Composite器都保证在所有监听器之后运行Canvas本身。记得
Size侦听器以Canvas确保 的大小Composite始终正确setBackgroundMode(SWT.INHERIT_FORCE)在CanvasIn 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;