Прозрачный фон Java Graphics2D

у меня есть Graphics2D object и я хочу настроить фон объекта. У него есть setBackground метод, который имеет параметр цвета. Таким образом я могу установить цвет фона.

мой вопрос: как я могу установить прозрачность фона объекта? Могу ли я каким-то образом сказать, что он полностью прозрачен? Могу ли я каким-то образом сказать, что он полностью непрозрачен? Могу ли я как-то сказать, что он имеет прозрачность/непрозрачность 0.8? Как установить эти значения?

Я видно, что есть int предопределенные значения, называемые TRANSLUCENT и OPAQUE, но я не уверен, как я могу их использовать.

может быть, правильное использование-вызвать конструктор цвета с параметром int?

5 ответов


вы можете создать объект цвета, указав прозрачность. Например, следующий код создает красный цвет с прозрачностью 50%

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

вы можете вызвать конструктор, цвета следующим образом:

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

где a-значение альфа (прозрачность).

Как и во всех классах Java, вы можете найти эту информацию в официальном API:http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

это действительно хороший ресурс и может избавить вас от ожидания ответа здесь.


Java на самом деле довольно хорош в этом, вы можете достичь прозрачности и многое другое. Вот код для простого прозрачного окна I скопировал из 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);
            }
        });
    }
}

посмотреть здесь для получения дополнительной информации.


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));*/

вы можете попробовать это, если вы используете JPanel : jPanel1.setOpaque (false);