我正在尝试将带有图像的按钮(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,谢谢你的回答,我一定会关注this article。也许我会找到自己的方式。到目前为止,我已经改进了我的代码。首先,我设法摆脱灰色背景噪音。其次,我终于成功创建了按钮,就像我在第一时间看到的那样。然而,又出现了另一个障碍。当我删除图像(按钮)透明边框时,它发现按钮改变了它的模式(从按钮到复选框)。问题是我来得非常接近我正在寻找的东西,现在我有点困惑。如果你有时间,请看一下我的代码。
以下是代码,如果您启动它,您将看到问题所在(希望您在下载图像时没有问题):
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();
}
答案 0 :(得分:3)
如何摆脱按钮周围空间的唯一方法是设置背景Color
或背景Image
。
button.setBackgroundImage(image);
但是,如果按钮不在左上角(就像现在一样),背景图像将无法正确定位。首先,你必须定位按钮,然后制作适当部分背景的图像,然后将其设置为按钮作为背景图像。
检查文章Taking a look at SWT Images - Transparency,了解Label
(以及Button
)透明度的其他详细信息。
答案 1 :(得分:1)
您还可以确保通过创建不会在任何平台中显示任何背景 带有图片的标签,用作标签的按钮和鼠标监听器。
答案 2 :(得分:0)
样式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);