我正在编写一个应用程序,我们的设计师希望在我们的一些复合材料中使用渐变来处理一些背景。
我写了以下代码:
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);
}
});
这可以在复合材料上精细地绘制渐变,但我们在复合材料的顶部有标签/CLabel、画布和链接。
在这些区域中,背景只是绘制空画布时得到的纯灰色。
我试过强制标签继承背景,如下所示:
label.setBackgroundMode(SWT.INHERIT_DEFAULT) //SWT.INHERIT_FORCE Doesn't work either
但这给我留下了相同的默认灰色,并且在 Composite 顶部的组件后面没有渐变。
有什么建议让渐变成为每个元素的背景?
我不反对将渐变绘制到提供图像的 gc 上,然后将背景设置为该图像。但是,该方法根本不起作用,复合或其任何元素。
我也无法根据我的知识单独设置渐变。我们希望整个复合材料是一个均匀流动的梯度。
[编辑] 我在这里上传了一个例子到 twitpic 。
谢谢,
布赖恩·吉安福卡罗