如何将控件设置为透明背景
Posted
技术标签:
【中文标题】如何将控件设置为透明背景【英文标题】:How to set a control to a transparent background 【发布时间】:2014-01-25 09:25:06 【问题描述】:如何将控件的背景设置为透明?
我现在说的是Label
和Text
控件,但可以是我在GUI 中看到的任何标准控件。
【问题讨论】:
为什么需要它们是透明的? Visual Studio 默认使标签透明,就像我工作的其他环境一样。答案是我不想设置背景颜色。我想让窗口的背景(应用程序背景)显示出来。 【参考方案1】:如果您添加一个 Composite 并指定以下标志,它将是透明的:new Composite(shell, SWT.TRANSPARENT | SWT.NO_BACKGROUND);
【讨论】:
【参考方案2】:据我所知,您不能在 SWT 中设置透明或半透明的控件(某些操作系统上的 shell 除外),例如在表格控件前面显示一个面板,表格将通过面板显示。正如其他海报所写,一个人只能继承背景。
【讨论】:
【参考方案3】:shell.setBackgroundMode(SWT.INHERIT_FORCE);
会做你想做的。
Composite
常量表示一个属性(例如背景)被所有子级继承。
public static void main(String[] args)
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
shell.setText("***");
shell.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
shell.setBackgroundMode(SWT.INHERIT_FORCE);
new Button(shell, SWT.PUSH).setText("Button");
new Label(shell, SWT.NONE).setText("Label");
shell.pack();
shell.open();
while (!shell.isDisposed())
if (!display.readAndDispatch())
display.sleep();
display.dispose();
看起来像这样:
【讨论】:
不错的答案。我只需要添加这一行:shell.setBackgroundMode(SWT.INHERIT_FORCE);在我设置背景之后。【参考方案4】:您需要在子控件之前对您的组合进行以下调用,例如标签将从组合中继承背景。
composite.setBackgroundMode( SWT.INHERIT_DEFAULT );
【讨论】:
我添加了这行代码以及其他代码来创建复合变量(请参阅我的更新),但我仍然没有看到标签是透明的。以上是关于如何将控件设置为透明背景的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2008 C#控件textbox背景如何设置为透明?