Android:在小位图和大位图后面放置大位图应该采用较小的位图

时间:2012-04-04 09:58:14

标签: android graphics bitmap overlay clipping

好的,请看这个图形专家。我有一个矩形位图(大)和一个圆形位图(小)。我想将较大的矩形位图放在较小的圆形位图后面,较大的矩形位图采用较小的圆形位图的形状(即矩形位图应该被剪裁或以其他方式)。较小的圆形位图具有一定的透明度,因此剪切的矩形位图将在转换后显示。我尝试过以下方法:

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

}

因此,这给出了解决方案的一部分,但矩形位图绘制了较小的位图(尽管它假定形状较小)。我可能错过了一些明显的东西,并会欣赏一个观点或推动正确的方向。谢谢!

1 个答案:

答案 0 :(得分:0)

首先绘制大位图然后绘制你需要交换语句的小位图

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