我正在使用Swift 3.0
实现一个着色应用。我从CGContext
获得UIImageView
,并在UIBezierPath
事件方法中绘制UITouch
以上 - 开始,移动和结束 - 。
如何获取上下文图像和绘制路径之间的交叉点像素?我需要让所有像素不仅仅是路径的控制点。
答案 0 :(得分:0)
我假设您在用户绘制时平滑bezier路径并添加曲线,而不仅仅是使用线段?否则,您可以计算每个触摸点之间沿直线的点。
如果您在UIBezierPath中使用弯曲元素,那么您可以使用我的库ClippingBezier获取该路径上的点。代码看起来像:
for(NSInteger px = 0; px < [userDrawnPath length]; px++){
CGPoint pointAlongPath = [[userDrawnPath bezierPathByTrimmingToLength:px] lastPoint];
}
速度很快,但您应该在用户绘制时缓存结果,以便每次用户添加新的触摸点时都不会重新计算每个像素。