アプリを作成していて、デザイナーがいくつかのコンポジットの背景にグラデーションを使用したいと考えています。
次のコードを書きました。
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);
}
});
これにより、コンポジットにグラデーションがうまく描画されますが、ラベル/CLabels、キャンバス、およびリンクがコンポジットの上にあります。
これらの領域では、背景は、空のキャンバスを描画したときに得られる無地のグレーです。
次のように、ラベルに背景を強制的に継承させようとしました。
label.setBackgroundMode(SWT.INHERIT_DEFAULT) //SWT.INHERIT_FORCE Doesn't work either
しかし、これにより、同じデフォルトのグレーが残り、コンポジットの上のコンポーネントの背後にグラデーションはありません。
グラデーションを各要素の背景にするための提案はありますか?
提供された画像を使用して gc にグラデーションを描画し、その画像に背景を設定することに反対しません。ただし、そのメソッドは、コンポジットまたはその要素のいずれかでまったく機能していません。
また、グラデーションを個別に設定することはできません。コンポジット全体が 1 つの均一な流れるようなグラデーションになるようにします。
[編集]ここに twitpic に例をアップロードしました。
ありがとう、
ブライアン・ジャンフォルカロ