我正在尝试为图像编辑应用程序创建色调曲线。我已经使用UIBezierPath创建了曲线本身,但是,当曲线超出视图的界限时,它将被切除。
ios - 画一条截断UIBezierPath的线-LMLPHP

其他应用程序通过在曲线被切除处画一条线来解决此问题。
你有什么想法要实现吗?一种可能的方法是检测曲线在边界之外的位置并在其中画一条线,但是我找不到办法。

ios - 画一条截断UIBezierPath的线-LMLPHP

最佳答案

确实不是一个简单的方法。我可以想到两个选择:

  • 找出曲线偏离视图边缘的位置,并在缺失区域绘制线段。这需要您自己评估曲线的每条曲线上的一堆点(“三次贝塞尔曲线”部分here具有该公式),并存储X位置的X列表,其中曲线的Y值超出查看,然后又回到哪里。从那里,您可以使用该列表为视图之外的位绘制一系列线段。
  • 制作第二版曲线,该曲线通过其角在视图底部下方循环,将其分配给具有填充颜色集的形状层,并用薄层遮罩该层(高度等于您的线条粗细) )沿着视图顶部运行。由于细线层的末端将与曲线的某些部分重叠,因此不一定看起来像其他方法一样好,但是数学工作量却少了很多。在下图中,左侧是原始路径;之后,是在视图的右下角添加了附加点的路径,然后关闭路径(使用-closePath);将其分配给CAShapeLayer并设置其填充颜色(蓝色),然后将该层设置为位于视图顶部(绿色)的矩形矩形薄层的遮罩,使您可以在曲线越过顶部的任何位置看到该层您的看法。
  • 10-08 11:42