添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
英勇无比的火腿肠  ·  Bad request·  2 周前    · 
独立的扁豆  ·  openwrt修改密码 - CSDN文库·  4 月前    · 

半透明描画

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