1

我希望能够从此图像中选择一些区域,并更改所选区域的颜色。

在此处输入图像描述

为此,我想到了使用CALayerand UIBezierPath

  • 我已经从图像中清除了彩色区域,然后我获取了每个区域点并UIBezierPath在图像下方绘制了一个。
  • 每个区域我有 3CALayer秒,每个区域CALayer都有一个UIBezierPath预定义的点。

在此处输入图像描述

当用户点击一个图层时,它会显示所选图层而不填充UIBezierPath,只是在 周围有一个边框UIBezierPath,结果如下所示:

在此处输入图像描述

  • UIView在图像上添加了一个Opacity = 0.6f并重新绘制了上面的所有CALayers。
  • 所有层都隐藏在新的UIView

一切都很好,下一步是合并选定的区域:

  • 我从第一个区域取点并将其添加到第二个区域的点
  • UIBezierPath用新点创建了一个新点

我的问题是结果是错误的:

在此处输入图像描述


  1. 如何将 aUIBezierPath与正确的点顺序合并?
  2. 有没有更好的方法来完成这样的事情而不使用UIBezierPath
4

1 回答 1

1

从上面的图片来看,路径是错误的,因为没有遵循点的顺序,这几乎把你的路径搞砸了。我不认为贝塞尔路径首先是执行此操作的正确工具,因为您有矩形或点对点连接。所以你有一个 Poligon 而不是 Bezier Path 对象。然而 UIKit 似乎将所有这些捆绑到一个 UIBezierPath 对象中(如果你问我,不是最佳命名)。

这里棘手的事情是找出两个形状真正相互接触的位置,并像以前一样在序列中添加点,然后撕掉中间的垂直线并将路径连接到另一个结构。

另一种选择是使用位图并简单地将位图合并并创建一个新形状。这在很大程度上取决于您的基础数据是如何表示和管理的。您也可以简单地保留两个形状,然后将它们加入一个元对象以同时绘制它们。

于 2012-09-20T12:44:08.477 回答