如何在Android上的画布中将位图的非矩形(例如椭圆形)部分blit?
考虑如何blit位图的矩形部分:
canvas.DrawBitmap(src,src_rect,dest_rect,paint)
。遗憾的是,非矩形区域没有相应的方法。
有四种方法可以呈现(也许你知道第五种方法?):
将想要blit的矩形边界复制到中间位图,然后将不想要blit的像素设置为透明,然后绘制该位图
制作一个掩码位图 - 有单独掩码进行blit的方法吗?
BitmapShader
使用drawArc()/drawCircle()
;但是,我无法弄清楚如何正确对齐 矩阵 ;你会如何初始化这个操作的矩阵?
使用非常复杂的剪辑区域
其中, 选项3 是我最想工作的那个;但是,我无法弄明白该怎么做;你能吗?
答案 0 :(得分:3)
您可以使用选项编号#3,它可能是最简单的。另一种方法是在中间位图(ARGB8888
)中绘制要剪切的形状,然后使用DstIn
或DstOut
xfermode绘制原始位图。