【发布时间】:2014-01-19 01:30:43
【问题描述】:
我想画一条动态宽度的线,如附图所示。什么应该是最好的方法。 ?
更新:
我的任务是在手指移动时画线。并且线宽随着滑动速度的变化而变化。两者(线宽和手指滑动速度)都成正比。
【问题讨论】:
-
不知道这会对你有所帮助。很晚才回复:merowing.info/2012/04/…
标签: ios objective-c ipad core-graphics
我想画一条动态宽度的线,如附图所示。什么应该是最好的方法。 ?
更新:
我的任务是在手指移动时画线。并且线宽随着滑动速度的变化而变化。两者(线宽和手指滑动速度)都成正比。
【问题讨论】:
标签: ios objective-c ipad core-graphics
看看这篇文章Smooth Freehand Drawing。这可能会有所帮助。 您可以使用控制点进行操作
[path addCurveToPoint:pts[3] controlPoint1:pts[1] controlPoint2:pts[2]];
并填充两个 bezierPaths 之间的区域。我不确定它是否会起作用,但是如果您没有找到其他任何东西,您可以尝试。
【讨论】:
在 iOS(或 Mac OS)中没有直接支持可变厚度曲线。cocos2d 项目看起来是一个不错的方法。
也不支持边缘羽化到透明的软边缘曲线。我考虑过使用 OpenGL 实现与 Cocos 链接中概述的方法类似的方法。这将是一个很好的顶点着色器应用程序,因为它可以利用着色器中可用的并行顶点处理和矢量数学。
【讨论】:
由于您发布的图像没有任何一致的高宽比例来计算和更改,我怀疑这无法实现。 在其他解决方案中,您可以绘制一条固定像素线,例如 2 像素,并根据绘制的长度扩大宽度(如果线到中心),然后再次从中心点开始放气到终点。
您需要查看 x 坐标之间的差异,否则如果使用高节点绘制正弦波,则线宽将相互重叠。
Edited : This link 可能你会感兴趣。你可以根据需要修改它,它在 cocos2d 中。
【讨论】: