- PR -

2Dで、透過率を設定する

1
投稿者投稿内容
ゴールデン
常連さん
会議室デビュー日: 2004/08/22
投稿数: 46
投稿日時: 2004-09-16 06:45
Graphics2Dでそれぞれ透過率を設定して2つの楕円を描きたいです。下のコードのどこがいけないのでしょうか。g2d.drawImageでイメージを描くものに変えるとできるのですが、g2d.fillで楕円を描こうとするとできないのです。お願いします。
コード:
public void paint(Graphics g){
        og=offs.getGraphics();
        if(og!=null){
	         try{	
	                   Graphics2D g2d=(Graphics2D)og;
                            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f));
	                   g2d.fill(new Ellipse2D.Double(140, 180, 60, 20));
	                   g2d.scale(2.0f,1.0f);
		          g2d.setColor(Color.red);
		          g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.05f));
		          g2d.fill(new Ellipse2D.Double(20, 80, 60, 20));
		          g.drawImage(offs,0,0,this);
	           }catch(Exception e){}
		  finally{
		          og.dispose();
	          }
          }
}

ToGo
常連さん
会議室デビュー日: 2002/03/16
投稿数: 46
投稿日時: 2004-09-17 06:39
引用:

ゴールデンさんの書き込み (2004-09-16 06:45) より:
Graphics2Dでそれぞれ透過率を設定して2つの楕円を描きたいです。下のコードのどこがいけないのでしょうか。g2d.drawImageでイメージを描くものに変えるとできるのですが、g2d.fillで楕円を描こうとするとできないのです。お願いします。


Color.redはalpha値が1(透過率0%)なので、alpha値を指定したColorオブジェクトを生成して
指定する必要があります。
color1 = new Color(1.0f, 0.0f, 0.0f, 0.5f); // 透過率50%の赤
g2d.setPaint(color1);
g2d.fill(....);

color2 = new Color(0.0f, 0.0f, 1.0f, 0.5f); // 透過率50%の青
g2d.setPaint(color2);
g2d.fill(....);
ゴールデン
常連さん
会議室デビュー日: 2004/08/22
投稿数: 46
投稿日時: 2004-09-17 22:03
ToGoさん、ご返答ありがとうございます。
なるほどGraphics2Dでは、setColorで、alpha値まで指定できるのですね。
やってみます。
こういう細かいことは、インターネットでは調べにくいので、やはり2Dに関する本を買わないと詳しいことが分かっていかないな、と思いました。
明日買いに行きます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)