Размещение кнопок изображения на фоне изображения - PullRequest
3 голосов
/ 31 августа 2011

Я пытаюсь поместить кнопки с изображениями (GIF) на фон, который уже был установлен как изображение (shell.setBackgroundImage(image)), и я не могу понять, как убрать прозрачную рамку вокруг кнопок с изображениями.Я был бы признателен, если бы кто-нибудь дал мне несколько советов по этому вопросу.

Вот мой код:

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;

public class Main_page {
        public static void main(String[] args) {
                Display display = new Display();
                Shell shell = new Shell(display);
                Image image = new Image(display, "bg.gif");
                shell.setBackgroundImage(image);
                shell.setBackgroundMode(SWT.INHERIT_DEFAULT);
                shell.setFullScreen(true);

                Button button = new Button(shell, SWT.PUSH);
                button.setImage(new Image(display, "button.gif"));

                RowLayout Layout = new RowLayout();
                shell.setLayout(Layout);

                shell.open();
                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch())
                            display.sleep();      
                }
                display.dispose();
        }
}

Sorceror, спасибо за ваш ответ, я обязательно изучу эта статья .Может быть, я найду свой путь.Пока что я немного улучшил свой код.Во-первых, мне удалось избавиться от серого фонового шума.Во-вторых, мне наконец-то удалось создать кнопку, как я ее видел в первую очередь.Тем не менее, еще одно препятствие возникло.Когда я убрал изображение (кнопку) с прозрачной границы, оказалось, что кнопка меняет свой режим (с кнопки на флажок).Проблема в том, что я так близко подошел к тому, что искал, и теперь я немного озадачен.Если у вас есть время, пожалуйста, взгляните на мой код.

Вот код, если вы запустите его, вы увидите, в чем проблема (надеюсь, у вас не было проблем с загрузкой изображений):

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;

public class Main_page {
        public static void main(String[] args) {
                Display display = new Display();
                Shell shell = new Shell(display);
                Image image = new Image(display, "bg.gif"); // Launch on a screen 1280x1024
                shell.setBackgroundImage(image);
                shell.setBackgroundMode(SWT.TRANSPARENT);
                shell.setFullScreen(true);


                GridLayout gridLayout = new GridLayout();
                gridLayout.marginTop = 200; 
                gridLayout.marginLeft = 20;
                shell.setLayout(gridLayout);



                // If you replace SWT.PUSH with SWT.COLOR_TITLE_INACTIVE_BACKGROUND
                // you will see what I am looking for, despite nasty check box  

                Button button = new Button(shell, SWT.PUSH); 
                button.setImage(new Image(display, "moneyfast.gif"));



                shell.open();
                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch())
                            display.sleep();      
                }
                display.dispose();
        }

Ответы [ 3 ]

3 голосов
/ 02 сентября 2011

Единственный способ избавиться от пробела вокруг кнопки - установить фон Color или фон Image.

button.setBackgroundImage(image);

Но, если кнопка не будет находиться в левом верхнем углу(как и сейчас), фоновое изображение не будет правильно расположено.Поэтому сначала вам нужно расположить кнопку, затем создать изображение соответствующей части фона, а затем установить для него кнопку в качестве фонового изображения.

Проверить статью Взглянуть на SWT Images - Transparency для дополнительной информации о прозрачности в LabelButton также).

1 голос
/ 29 августа 2012

Вы также можете быть уверены, что на какой-либо платформе не появится фон, создав ярлык с изображением, которое действует как кнопка и слушатель мыши для ярлыка.

0 голосов
/ 02 августа 2017

Стиль SWT.TRANSPARENT помогает:

    Button button = new Button(buttonParent,  SWT.TRANSPARENT);
    InputStream is = getClass().getResourceAsStream("my_image.png");
    ImageData imageData = new ImageData(is).scaledTo(16, 16);
    Image image = new Image (button.getDisplay(), imageData);
    button.setImage(image);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...