2012-04-04 4 views
0

これはグラフィックスの専門家を探す必要があります。私は長方形のビットマップ(大)と円形のビットマップ(小)を持っています。大きな円形のビットマップの後ろに大きな円形のビットマップの後ろに、より小さな円形のビットマップの形を取るより大きな長方形のビットマップを配置したい(つまり、長方形のビットマップを切り抜かなければならない)。小さな円形のビットマップには透明度があるため、変換後にクリップされた長方形のビットマップが表示されます。私は、次のことを試してみました:Android:小さなビットマップと大きなビットマップの背後に大きなビットマップを配置するには、より小さなビットマップを使用する必要があります

protected void onDraw(Canvas c) { 

int sc = canvas.saveLayer(x, y, x + w, y + h, null, 
           Canvas.MATRIX_SAVE_FLAG | 
           Canvas.CLIP_SAVE_FLAG | 
           Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | 
           Canvas.FULL_COLOR_LAYER_SAVE_FLAG | 
           Canvas.CLIP_TO_LAYER_SAVE_FLAG); 

canvas.drawBitmap(bmpSmallCircular, 0, 0, backgroundPaint); 
backgroundPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); 
canvas.drawBitmap(bmpLargeRectangular, 0 , 0, backgroundPaint); 
backgroundPaint.setXfermode(null); 
canvas.restoreToCount(sc); 

} 

だから、これは解決策の一部を与えるが、(それは小さいの形状を想定していますが)長方形のビットマップが小さいビットマップの上に描画します。私はおそらく明白な何かを見逃しているし、正しい方向にポイントやプッシュを感謝します。ありがとう!

答えて

0

最初の大規模なビットマップを描くには、あなたが声明を交換する必要が小さなビットマップを描くだけで

canvas.drawBitmap(bmpLargeRectangular, 0 , 0, backgroundPaint); 
canvas.drawBitmap(bmpSmallCircular, 0, 0, backgroundPaint); 
+0

おかげで、すでにそれを試してみました。矩形は円よりも大きいので、円を越えて広がります(私が必要とするものではありません)。私は、円の外にある矩形のどこかで矩形を覆う円が必要です。 – user1312428

+0

イメージを実際にどのように表示し、現在どのように取得しているのかを表示できます – Pratik

+0

イメージを追加しようとしましたが、私が新しくなったので、それが問題です。しかし、私はサンプルをここにアップロードしました:http://img805.imageshack.us/img805/7628/circleoverlay.pngそれがうまくいくことを願っています。矢印の右側にある画像を見ることができれば、矩形のハッシュ領域は表示されません。ありがとう。 – user1312428

関連する問題