読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



半透明描画

Javagame

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

半透明描画

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