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