【问题标题】:Transparent SWT Canvas透明 SWT 画布
【发布时间】:2011-07-02 07:32:57
【问题描述】:

我想让 SWT Canvas 的背景透明,以便可以看到它后面的其他小部件。

我尝试将 alpha 设置为 0 并用矩形填充画布,并且还使用选项 SWT.NO_BACKGROUND 无济于事。

【问题讨论】:

    标签: eclipse swt


    【解决方案1】:

    AFAIK,SWT 不可能以这种方式(以跨平台方式)将小部件放置在彼此之上。透明背景不允许看到其他小部件。此外,对透明像素的任何点击都不会委托给后面的小部件。

    但是您可以将贝壳彼此叠放。您可以创建透明壳或具有不规则边界的壳。请参阅Snippets 中的 Shell 示例。这不一样,但根据您想要实现的目标,它可能就足够了。

    【讨论】:

    • 可以使用 FormLayout 将小部件彼此叠放。但我不知道如何使 Canvas 透明。
    • False,您可以将控件放在一起。使用 setBounds 位置并给它 layoutData 告诉它从布局中排除。
    • 好的,显然你可以这样做,但这不是问题所在。这是关于透明背景。我会澄清我的答案。
    【解决方案2】:

    有一种方法可以在 Linux (GTK) 上实现。 (但是,它在 Windows 上工作。(不了解 MacOSX。))

    只需 setBackground 到带有 alpha 通道的 RGBA。例如:

    Canvas canvas = new Canvas(parent, SWT.NONE);
    canvas.setBackground(new Color(canvas.getDisplay(), 100,100,100,100));
    //Note the last argument (I'm setting not only R, G, B, but also A).
    

    您甚至不需要SWT.NO_BACKGROUNDSWT.TRANSPARENT 或其他样式标志。

    P.S.:您不应该以这种方式创建颜色。颜色将使用 dispose 进行处理。将新创建的颜色分配给变量,以便能够重用它并释放它。为了简单起见,我创建了“内联”颜色。

    附加说明:不要将 alpha-channel 设置为 0。虽然较小的值应该意味着更透明,但实际上它不适用于值 0,仅适用于 1 及以上。可能,它认为 0 为未设置或等等。

    【讨论】:

    • 我已经在 Windows 上使用 SWT 4.712 进行了尝试,但没有成功。 :(
    • @ThomasS.,是的,你是对的。它在 Windows 上不起作用。至少,不在我的 Windows 7 虚拟机中。
    【解决方案3】:

    在 Windows 上,我成功实现了以下透明控制:

    final Composite composite = new Composite(parent, SWT.TRANSPARENT);
    composite.addListener(SWT.Paint, new Listener() {
        @Override
        public void handleEvent(Event event) {
            event.gc.drawString("hello world", 0, 0, true);
        }
    });
    

    很遗憾,这不适用于 OS X 或 Linux。

    【讨论】:

      【解决方案4】:

      你可以使用:

      shell.setAlpha(180);
      

      该值的设置范围为 02550 表示透明,255 表示纯色背景

      【讨论】:

        【解决方案5】:

        试试:

         new Canvas(parent, SWT.TRANSPARENT);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-13
          • 2017-04-12
          • 2011-11-09
          • 2017-08-09
          • 1970-01-01
          • 2022-01-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多