web-dev-qa-db-fra.com

Fond transparent Java Graphics2D

J'ai un objet Graphics2D et je veux configurer l'arrière-plan de l'objet. Il a une méthode setBackground, qui a un paramètre Color. De cette façon, je peux définir la couleur de l'arrière-plan.

Ma question est la suivante: comment définir la transparence de l'arrière-plan de l'objet? Puis-je en quelque sorte dire qu'il soit complètement transparent? Puis-je en quelque sorte dire qu'il soit complètement opaque? Puis-je en quelque sorte lui dire d'avoir une transparence/opacité de 0,8? Comment puis-je définir ces valeurs?

J'ai vu qu'il existe des valeurs int prédéfinies appelées TRANSLUCENT et OPAQUE, mais je ne sais pas comment les utiliser.

Peut-être que l’utilisation correcte est d’appeler le constructeur de Color avec un paramètre int?

14
Lajos Arpad

Vous pouvez construire un objet Color en spécifiant une transparence. Par exemple, le code suivant construit une couleur ROUGE avec une transparence de 50%

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

Vous pouvez appeler le constructeur de Color de la manière suivante:

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

où a est la valeur alpha (transparence).

Comme pour toutes les classes Java, ces informations se trouvent dans l'API officielle: http://docs.Oracle.com/javase/7/docs/api/Java/awt/Color.html

C'est une très bonne ressource et peut vous éviter une réponse ici.

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

Java est vraiment très bon dans ce domaine, vous pouvez obtenir de la transparence et bien plus encore. Voici du code pour une simple fenêtre transparente I copiée depuis 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);
            }
        });
    }
}

Regardez ici pour plus d'informations.

2
Abaab

Vous pouvez essayer ceci si vous utilisez un JPanel: jPanel1.setOpaque (false);

0
Emad Saber