Java Graphics2D透明背景

时间:2013-05-07 15:57:30

标签: java background transparency graphics2d

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

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

我已经看到有一些名为TRANSLUCENTOPAQUE的预定义值,但我不知道如何使用它们。

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

7 个答案:

答案 0 :(得分:18)

您可以通过指定透明度来构造Color对象。例如,以下代码构造具有50%透明度的RED颜色

Color c=new Color(1f,0f,0f,.5f );

答案 1 :(得分:4)

您可以通过以下方式调用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

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

答案 2 :(得分:2)

Java实际上非常擅长这些东西,你可以实现透明度等等。这是来自oracle的简单透明窗口copied的一些代码:

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);
            }
        });
    }
}

查看here了解更多信息。

答案 3 :(得分: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));*/

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果要提供透明效果,请对4个变量使用“颜色”属性:

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

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

如果不希望显示 background ,请使用值 null

this.setBackground(null);

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

答案 6 :(得分:0)

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

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

值 50 用于透明度。