我正在编写一个应用程序,我们的设计师想在一些组合中使用渐变背景。
我编写了以下代码:
composite.addListener (SWT.Paint, new Listener () {
public void handleEvent (Event e) {
GC gc = e.gc;
Rectangle rect = composite.getClientArea ();
Color color1 = new Color (display, 0, 0, 0);
Color color2 = new Color (display, 255, 255, 255);
gc.setForeground(color1);
gc.setBackground(color2);
gc.fillGradientRectangle (rect.x, rect.y, rect.width, rect.height , true);
}
});
这在合成图像上正确绘制了渐变,但是我们在合成图像上覆盖了标签/带标签的控件、画布和链接。
在这些区域中,背景只是绘制空画布时得到的纯灰色。
我尝试强制让标签继承背景,如下所示:
label.setBackgroundMode(SWT.INHERIT_DEFAULT) //SWT.INHERIT_FORCE Doesn't work either
但是这样会让我只有相同的默认灰色,并且没有渐变背景放在组合的顶部组件后面。
有没有什么建议可以使每个元素的背景都成为渐变?
我不反对使用提供图像并将渐变绘制到gc上,然后将背景设置为该图像的方法。但是,该方法根本没有起作用,无论是复合框还是其任何元素。
此外,据我所知,无法单独设置渐变。我们希望整个复合框都是一个统一的流动渐变。
[编辑] 我上传了一个示例到twitpic here。
谢谢,
Brian Gianforcaro