21

我有一个Graphics2D对象,我想设置对象的背景。它有一个setBackground方法,该方法有一个 Color 参数。这样我可以设置背景的颜色。

我的问题是:如何设置对象背景的透明度?我可以以某种方式告诉它是完全透明的吗?我可以以某种方式告诉它完全不透明吗?我可以以某种方式告诉它具有 0.8 的透明度/不透明度吗?如何设置这些值?

我已经看到有 int 预定义的值称为TRANSLUCENTand OPAQUE,但我不确定如何使用它们。

也许正确的用法是使用 int 参数调用 Color 的构造函数?

4

7 回答 7

23

您可以通过指定透明度来构造 Color 对象。例如下面的代码构造了一个透明度为 50% 的红色

Color c=new Color(1f,0f,0f,.5f );
于 2013-05-07T16:04:07.900 回答
5

您可以通过以下方式调用 Color 的构造函数:

Color c = new Color(r,g,b,a);

其中 a 是 alpha(透明度)值。

与所有 Java 类一样,您可以在官方 API 中找到这些信息:http: //docs.oracle.com/javase/7/docs/api/java/awt/Color.html

这是一个非常好的资源,可以让您在此处等待答案。

于 2013-05-07T16:03:51.463 回答
2

如果你使用的是 JPanel,你可以试试这个: jPanel1.setOpaque(false);

于 2014-07-02T12:08:52.803 回答
2
jPanel1.setBackground(new Color(0,0,0,200));
/*This will put a transparent black color on a panel, the important part of the code is: .setBackground(new Color(0,0,0,200));*/
于 2018-04-04T07:40:20.550 回答
1

Java 实际上很擅长这些东西,你可以实现透明度等等。这是我从 oracle复制的简单透明窗口的一些代码:

package misc;

import java.awt.*;
import javax.swing.*;
import static java.awt.GraphicsDevice.WindowTranslucency.*;

public class TranslucentWindowDemo extends JFrame {
    public TranslucentWindowDemo() {
        super("TranslucentWindow");
        setLayout(new GridBagLayout());

        setSize(300,200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Add a sample button.
        add(new JButton("I am a Button"));
    }

    public static void main(String[] args) {
        // Determine if the GraphicsDevice supports translucency.
        GraphicsEnvironment ge =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice gd = ge.getDefaultScreenDevice();

        //If translucent windows aren't supported, exit.
        if (!gd.isWindowTranslucencySupported(TRANSLUCENT)) {
            System.err.println(
                "Translucency is not supported");
                System.exit(0);
        }

        JFrame.setDefaultLookAndFeelDecorated(true);

        // Create the GUI on the event-dispatching thread
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
               TranslucentWindowDemo tw = new TranslucentWindowDemo();

                // Set the window to 55% opaque (45% translucent).
                tw.setOpacity(0.55f);

                // Display the window.
                tw.setVisible(true);
            }
        });
    }
}

在这里查看更多信息。

于 2013-05-07T16:05:26.670 回答
0

如果您想要提供透明效果,请使用 4 个变量的颜色属性:

this.setBackground(新颜色(0,0,0,.5f));

这为背景提供了前三个参数的 RGB 颜色(*new Color (** 0,0,0, **. 5f)*),第四个用于确定不透明度的百分比(opaque

如果您不希望显示背景,请使用值null

this.setBackground (null);

许多使用 setOpaque(false); 但这会带走填充而不是背景

于 2020-05-07T00:51:33.013 回答
0

像这样使用颜色的构造函数:

Color color = new Color(152,251,152, 50);

值 50 用于透明度。

于 2021-03-29T03:22:00.237 回答