Ios 使用UIImage内部的独特形状,Swift

Ios 使用UIImage内部的独特形状,Swift,ios,swift,core-graphics,core-image,Ios,Swift,Core Graphics,Core Image,我有一个像素阵列来描述图像中的某种形状。(例如,我的图像是一个蛋糕,我有蛋糕顶部樱桃的像素位置。) 我想做的是允许用户只在该形状的内部绘制。我的第一个建议是检查触摸是否在形状内部,然后才连接线条,但这会导致许多复杂情况: 在两个点之间可能会有其他形状,在这种情况下,我有 两条线将线分成多条线,并仅在 初始形状 第一个点可能在形状的内部,第二个点可能在形状的外部 在这种情况下,我必须找到边界上的等距点 形状 代码中的每个形状都用此类表示: (将像素保存为阵列2048x2048中的线性索引,边界

我有一个像素阵列来描述图像中的某种形状。(例如,我的图像是一个蛋糕,我有蛋糕顶部樱桃的像素位置。)

我想做的是允许用户只在该形状的内部绘制。我的第一个建议是检查触摸是否在形状内部,然后才连接线条,但这会导致许多复杂情况:

  • 在两个点之间可能会有其他形状,在这种情况下,我有 两条线将线分成多条线,并仅在 初始形状

  • 第一个点可能在形状的内部,第二个点可能在形状的外部 在这种情况下,我必须找到边界上的等距点 形状

代码中的每个形状都用此类表示:

(将像素保存为阵列2048x2048中的线性索引,
边界
-形状外线的索引):

那么,是否可以仅渲染像素并仅在像素内部绘制线?或者我应该处理我上面描述的所有边缘情况吗?谢谢


抱歉,我不是以英语为母语的人,所以请随意编辑,谢谢。

这似乎有点难。。。你是在研究像素(不是矢量)吗?那么
set
是否包含图像的所有像素(由其索引引用)?你是如何“合二为一”的?你用什么来画画?@FrankSchlegel是的,对,我在画像素。通过CGContext在另一个视图上绘制线条,然后在初始视图中合并它们。这似乎有点困难。。。你是在研究像素(不是矢量)吗?那么
set
是否包含图像的所有像素(由其索引引用)?你是如何“合二为一”的?你用什么来画画?@FrankSchlegel是的,对,我在画像素。通过CGContext在另一个视图上绘制线,然后在初始视图中合并线。
final class Shape {
    private(set) var set = IndexSet()
    let bounds: [Int]

    func contains(_ point: Int) -> Bool {
        return set.contains(point)
    }

    init(set: IndexSet, bounds: [Int]) {
        self.set = set
        self.bounds = bounds
    }
}