web-dev-qa-db-ja.com

Java Graphics2D透明な背景

私はGraphics2Dオブジェクトとオブジェクトの背景を設定したい。 Colorパラメータを持つsetBackgroundメソッドがあります。このようにして、背景の色を設定できます。

私の質問は、どのようにオブジェクトの背景の透明度を設定できますか?どういうわけか完全に透明であると言うことができますか?どういうわけか完全に不透明であると言うことができますか? 0.8の透明度/不透明度を持つようになんとかできますか?これらの値を設定するにはどうすればよいですか?

TRANSLUCENTおよびOPAQUEと呼ばれるint定義済みの値があることを見てきましたが、どのように使用できるのかわかりません。

たぶん正しい使い方は、intパラメータでColorのコンストラクタを呼び出すことですか?

17
Lajos Arpad

透明度を指定して、Colorオブジェクトを構築できます。たとえば、次のコードは50%の透明度を持つREDカラーを構築します

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

次の方法でColorのコンストラクターを呼び出すことができます。

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

ここで、aはアルファ(透明度)値です。

すべてのJavaクラスと同様に、この情報は公式APIにあります。 http://docs.Oracle.com/javase/7/docs/api/Java/awt /Color.html

これは非常に優れたリソースであり、ここで回答を待つのを避けることができます。

5
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は実際にこの点で非常に優れており、透明性などを実現できます。 Oracleの単純な透明ウィンドウI コピー のコードを次に示します。

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 を参照してください。

2
Abaab

JPanelを使用している場合は、これを試すことができます。jPanel1.setOpaque(false);

1
Emad Saber