Я пишу приложение, и наши дизайнеры хотят использовать градиенты для некоторых фонов в нескольких наших композициях.
Я написал следующий код:
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/CLabels, Canvases и Links поверх композита.
В этих областях фон просто серый, как при рисовании пустого холста.
Я попытался заставить ярлыки наследовать фон следующим образом:
label.setBackgroundMode(SWT.INHERIT_DEFAULT) //SWT.INHERIT_FORCE Doesn't work either
Но это оставляет меня с тем же серым цветом по умолчанию и без градиента за компонентами поверх композита.
Любые предложения по использованию градиента в качестве фона для каждого элемента?
Я был бы не против нарисовать градиент на gc с предоставленным изображением, а затем установить фон для этого изображения. Однако этот метод просто не работал вообще, составной или какой-либо из его элементов.
Кроме того, насколько мне известно, я не могу установить градиент индивидуально. Мы хотим, чтобы вся композиция была одним равномерным плавным градиентом.
[edit] Я загрузил пример на twitpic здесь.
Спасибо,
Брайан Джанфоркаро