人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

半透明描画

後ろが透けて見える効果を出す方法です。さあ何を透けさせようか。

半透明描画

transparent.jar

赤い丸はべた塗りで青い四角形は透けています。以下、描画部分のコードです。

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;

        // アルファ値
        AlphaComposite composite = AlphaComposite.getInstance(
                AlphaComposite.SRC_OVER, 0.5f);

        g2.setColor(Color.RED);
        g2.fillOval(50, 50, 100, 100);

        // アルファ値をセット(以後の描画は半透明になる)
        g2.setComposite(composite);

        g2.setColor(Color.BLUE);
        g2.fillRect(90, 90, 100, 100);
    }

AlphaCompositeの0.5が透明度です。0.0だと完全に透明、1.0だと不透明になります。0.5なので半分透けます。このAlphaCompositeオブジェクトをGraphics2Dオブジェクトにセットして描画すると以後半透明で描画されます。

f:id:aidiary:20090828220848j:plain

お化け屋敷

もちろん画像も透けて描画できます。お化けはやっぱ透けてないと気分でませんねー。

※背景画像はぐったりにゃんこのホームページさんからお借りしました。

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;

        // アルファ値
        AlphaComposite composite = AlphaComposite.getInstance(
                AlphaComposite.SRC_OVER, 0.2f);

        // 背景は普通に描画
        g2.drawImage(bgImage, 0, 0, this);

        // アルファ値をセット(以後の描画は半透明になる)
        g2.setComposite(composite);

        // お化けはもちろん半透明
        g2.drawImage(obakeImage, 100, 100, this);
    }

f:id:aidiary:20090828220849j:plain