iOS获取UIBezierPath和图像之间的交叉点像素

时间:2017-03-02 13:49:12

标签: ios swift uibezierpath cgcontext

我正在使用Swift 3.0实现一个着色应用。我从CGContext获得UIImageView,并在UIBezierPath事件方法中绘制UITouch以上 - 开始,移动和结束 - 。

如何获取上下文图像和绘制路径之间的交叉点像素?我需要让所有像素不仅仅是路径的控制点。

1 个答案:

答案 0 :(得分:0)

我假设您在用户绘制时平滑bezier路径并添加曲线,而不仅仅是使用线段?否则,您可以计算每个触摸点之间沿直线的点。

如果您在UIBezierPath中使用弯曲元素,那么您可以使用我的库ClippingBezier获取该路径上的点。代码看起来像:

for(NSInteger px = 0; px < [userDrawnPath length]; px++){
  CGPoint pointAlongPath = [[userDrawnPath bezierPathByTrimmingToLength:px] lastPoint];
}

速度很快,但您应该在用户绘制时缓存结果,以便每次用户添加新的触摸点时都不会重新计算每个像素。