如何将控件设置为透明背景

Posted

技术标签:

【中文标题】如何将控件设置为透明背景【英文标题】:How to set a control to a transparent background 【发布时间】:2014-01-25 09:25:06 【问题描述】:

如何将控件的背景设置为透明?

我现在说的是LabelText 控件,但可以是我在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 );

【讨论】:

我添加了这行代码以及其他代码来创建复合变量(请参阅我的更新),但我仍然没有看到标签是透明的。

以上是关于如何将控件设置为透明背景的主要内容,如果未能解决你的问题,请参考以下文章

React Native设置背景透明,文字不透明的控件

Visual Studio 2008 C#控件textbox背景如何设置为透明?

PB高手们请赐教!PB能使动态文本框背景透明吗?诸如“mle_1”控件,数据窗口背景能透明也行!见详述~

如何设置Android中控件的颜色透明度

MFC中richedit控件设置为透明后出现文字残留现象

Android设置Activity背景为透明style的方法