在Android(从API 15)中有什么方法可以剪辑/减去像在photoshop中屏蔽的视图吗?
请参阅以下示例: https://s31.postimg.org/d18lktjq3/index.jpg
红色视图只是一个大胆有趣的V形,而蓝色视图则更复杂。 请注意,在红色视图中,条纹部分是透明的。 我想获得的结果视图,就像蓝色的大视图,第二个视图的V形,以及任何上面的切割。
请注意,在最终结果中,V形“内部”的空间必须是透明的。
目前我使用两个视图一个接一个地填充这个效果(填充V形视图中的间隙),但这不是最佳的,因为我必须确切地知道另一个视图是什么,并总结视图比源大。
谢谢
答案 0 :(得分:0)
在Android中,这是使用 Porter-Duff传输模式完成的。
最好的方法是使用两个叠加位图:一个具有红色V形,一个互补位图,代表您想从下层切出的所有内容。
使用自定义视图,您可以覆盖onDraw()
来执行以下步骤:
代码看起来像这样(假设你已经创建了位图并计算了你想要绘制它们的x,y坐标):
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawBitmap(blue_base, blueX, blueY, paint);
// draw the red v on top of the blue part
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
canvas.drawBitmap(red_v, redX, redY, paint);
// erase the unwanted pixels from the blue part
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawBitmap(cut_out, redX, redY, paint);
这是一个有趣的教程,可以帮助您入门:Punch a hole in a bitmap by using Android's porter-duff Xfer - TechRepublic