在Android画布上绘制位图的一部分

时间:2010-09-29 19:09:25

标签: android graphics canvas matrix

如何在Android上的画布中将位图的非矩形(例如椭圆形)部分blit?

考虑如何blit位图的矩形部分: canvas.DrawBitmap(src,src_rect,dest_rect,paint)。遗憾的是,非矩形区域没有相应的方法。

有四种方法可以呈现(也许你知道第五种方法?):

  1. 将想要blit的矩形边界复制到中间位图,然后将不想要blit的像素设置为透明,然后绘制该位图

  2. 制作一个掩码位图 - 有单独掩码进行blit的方法吗?

  3. BitmapShader使用drawArc()/drawCircle();但是,我无法弄清楚如何正确对齐 矩阵 ;你会如何初始化这个操作的矩阵?

  4. 使用非常复杂的剪辑区域

  5. 其中, 选项3 是我最想工作的那个;但是,我无法弄明白该怎么做;你能吗?

1 个答案:

答案 0 :(得分:3)

您可以使用选项编号#3,它可能是最简单的。另一种方法是在中间位图(ARGB8888)中绘制要剪切的形状,然后使用DstInDstOut xfermode绘制原始位图。