0

好的,必须向图形专家寻求这一点。我有一个矩形位图(大)和一个圆形位图(小)。我想将较大的矩形位图放在较小的圆形位图后面,较大的矩形位图呈现较小圆形位图的形状(即矩形位图应该被剪裁或以其他方式)。较小的圆形位图具有一定的透明度,因此裁剪后的矩形位图将在转换后显示出来。我尝试了以下方法:

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

}

因此,这提供了部分解决方案,但矩形位图绘制在较小的位图上(尽管它确实采用较小的形状)。我可能遗漏了一些明显的东西,并且会很感激一个观点或朝着正确的方向前进。谢谢!

4

1 回答 1

0

先画大位图再画小位图你需要交换一下语句就好了

canvas.drawBitmap(bmpLargeRectangular, 0 , 0, backgroundPaint);
canvas.drawBitmap(bmpSmallCircular, 0, 0, backgroundPaint);
于 2012-04-04T10:12:45.337 回答