Iphone 在Quatz 2D/Core图形中触摸绘图

Iphone 在Quatz 2D/Core图形中触摸绘图,iphone,objective-c,core-graphics,quartz-graphics,quartz-2d,Iphone,Objective C,Core Graphics,Quartz Graphics,Quartz 2d,我正在尝试实现“手绘工具”。 目前算法看起来是这样的(我不插入任何代码,因为方法非常大,我将尝试解释一个想法): 绘图 在ToucheStarted:方法中,我创建NSMutableArray*pointsArray并向其中添加点。调用设置需要显示:方法 在触摸移动:方法I计算从点光线到当前点的最后添加点之间的点。将所有点添加到点阵列。调用设置需要显示:方法 在触摸完成:事件I计算阵列中最后添加的点和当前点之间的点。设置标志触摸完成。调用设置需要显示: 渲染: drawRect:方法检查是poi

我正在尝试实现“手绘工具”。 目前算法看起来是这样的(我不插入任何代码,因为方法非常大,我将尝试解释一个想法):

绘图

  • ToucheStarted:方法中,我创建NSMutableArray*pointsArray并向其中添加点。调用设置需要显示:方法
  • 触摸移动:方法I计算从点光线到当前点的最后添加点之间的点。将所有点添加到点阵列。调用设置需要显示:方法
  • 触摸完成:事件I计算阵列中最后添加的点和当前点之间的点。设置标志触摸完成。调用设置需要显示: 渲染:

    drawRect:方法检查是pointsArray!=无并且其中是否有任何数据。如果有-它开始在数组的每个点上画圆。如果设置了flagtouchesWereFinished,则将当前上下文保存到UIImage,释放点光线,将其设置为nil,然后重置该标志

    这种方法有很多缺点:

    • 很慢
    • 当用户长时间触摸和移动手指时,速度会变得非常慢。阵列变得巨大
    • 由圆圈组成的“线”很难看
    我想改变我的算法,使它更快,线更平滑。 因此,我希望在下面的URL上有像图片上那样的行(对不起,没有足够的声誉插入图像):

    你能给我个建议吗,我可以用这种方法画线(边缘光滑纤细)?我想在边上用alpha梯度画圆(使线条更平滑),但速度非常慢

    谢谢你的帮助

    更新

    我改变了绘图算法。现在,我保存的每个事件都是UITouch
    ,在drawRect:方法中,我从prev绘制路径。指向当前的一个。并在每次drawRect:调用时从上下文中转储UIImage

    但我还有两个问题:

  • 有可能画得更平滑些吗。我的意思是如果我画得很快,我很容易就能看到路径是一组直线。但我想画曲线,使路径平滑。也许贝塞尔曲线会有帮助,但我不明白它们在这方面有什么帮助。 情况
  • 我想用更细的线开始路径,也用更细的线结束路径。我怎样才能做这行变换? 谢谢
    你有没有想过,因为我也有同样的问题,我迫切需要帮助!!!谢谢