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

3

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

考虑如何将位图的矩形部分复制到画布上:canvas.DrawBitmap(src,src_rect,dest_rect,paint)。遗憾的是,对于非矩形区域没有相应的方法。

有四种方法可供选择(也许您知道第五种方法?):

  1. 将要复制的矩形边界拷贝到一个中间位图中,并将不需要复制的像素设置为透明,然后绘制该位图。

  2. 创建一个掩码位图 - 有没有用单独的掩码进行绘制的方法?

  3. 使用 BitmapShaderdrawArc()/drawCircle(); 然而,我无法弄清如何使矩阵正确对齐;你会如何初始化此操作的矩阵?

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

其中,我最想使用的是选项3;然而,我无法弄清如何实现;你能帮忙吗?

1个回答

3

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


你会如何配置矩阵? - Will
我不知道,这取决于你想要绘制什么。 - Romain Guy
啊哈,我在谷歌上只找到了一些人说他们花费了数小时来解决如何设置矩阵的问题,这些人包括像我这样理解矩阵的人,例如http://markmail.org/message/qjb6dxotj4jk57n4 - 请问有人能够记录下来并提供一些适当的例子,包括缩放等方面吗,Romain? - Will
在中间位图中已经绘制了 alpha 图案,然后使用 SRC_IN 传输模式将位图绘制到其中,在将中间位图绘制到场景之前能够正常工作。 - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接