对于我正在研究的项目,我有一张图片。出于测试目的,我只使用100像素乘100像素的红色正方形。
我想要做的是能够定义图像的不渲染部分。例如,假设我想要删除红色正方形中间的圆圈。如果这样做了,我们应该看到红色正方形,减去已擦除的圆圈以及该正方形背后的任何内容(圆圈被擦除的地方)。
除了将每个像素存储在2D阵列中并以此方式处理之外,我不确定如何做到这一点。在最终实现中,图像将远大于100像素,但这似乎效率低,并且会花费大量内存。
如果有人有任何替代解决方案(或改进我正在考虑的方法/例如对于10000×10000像素的图像有效的例子),将非常感激。
答案 0 :(得分:1)
使用“目的地输出”混合模式查看使用遮罩。使用此功能,您可以使用UIBezierPaths
在图像上绘制遮罩,然后“剪切掉”。我做了一些非常相似的事情,试图从UIView
切出一个圆圈,作为项目周围的工具提示环。
Mask a UIView with a cut-out circle
https://www.belightsoft.com/products/arttext/ATHelp/layers_blending.html#destination_out