画一条UIBezierPath被切断的线

时间:2015-12-10 19:38:44

标签: ios uibezierpath

我正在尝试为图像编辑应用创建色调曲线。我已经使用UIBezierPath创建了曲线本身,但是,当曲线超出视图边界时,它会被切断。 My current tone curve

其他应用已通过绘制曲线被截断的线来解决此问题。 你知道如何实现这个目标吗?一种可能的方法是检测曲线在界外的位置并在那里画一条线,但我找不到办法做到这一点。

Other Apps (Pixelmator & Darkroom)

1 个答案:

答案 0 :(得分:0)

没有一种简单的方法可以做到这一点。我能想到的两个选择:

  1. 找出曲线离开视图边缘的位置,并在缺失区域绘制线段。这需要自己评估每条曲线上的一堆点 - “CubicBézier曲线”部分here具有该公式 - 并存储曲线Y值偏离的X位置列表视图的顶部以及它再次返回的位置。从那里,您可以使用该列表为视图顶部位绘制一系列线段。
  2. 制作曲线的第二个版本,通过其角落环绕视图底部,将其分配给具有填充颜色集的形状图层,并使用薄图层(高度等于您的图层)进行遮罩线条粗细)沿着视图的顶部运行。这不一定像其他方法一样好,因为细线层的末端将与曲线的位重叠,但数学工作要少得多。在下图中,左边是原始路径;之后是为视图的右下角添加了额外点的路径,之后您将关闭路径(使用-closePath);将其分配给CAShapeLayer并设置其填充颜色(蓝色),然后将该图层设置为位于视图顶部(绿色)的薄矩形图层的蒙版,为您提供一个在曲线穿过顶部的任何位置都可见的图层你的观点 curve masking diagram