在Android Canvas Pain应用程序中删除特定路径的实现

时间:2015-05-19 09:43:29

标签: android android-canvas

我正在尝试使用绘画,删除,突出显示,撤消/重做功能构建基本的Android Canvas绘画应用程序。我已经将每个路径都设置为离散并保持它们的堆栈以实现撤消/重做功能。现在我想通过点击特定的注释来实现擦除,我需要删除它。我无法检测到用户在哪条路径上进行了触摸。

示例实现应该像三星galaxy tabs动作备忘录中的动作备忘录一样。http://support-us.samsung.com/spsn/detail.jsp?ctg_id=1280&sub_ctg_id=&live_id=&video_id=2942911618001 请参阅该

的删除功能

1 个答案:

答案 0 :(得分:0)

这里的基本问题是命中测试。蛮力方式是存储所有注释,然后对每个注释检查距离的每个坐标,如果距离小于某个阈值,则命中测试成功。但这是高效率的

经过大量研究后,我终于用以下方法解决了这个问题:

  1. 存储所有注释及其分接点并创建边界 每个人的框(Read about bounding box
  2. 现在,在每次点击时,找出点击目标位于该注释的边界框中的那些注释。将这些注释标记为候选注释
  3. 对于每个候选注释,通过检查命中点是否靠近该注​​释来进行暴力测试
  4. 我们可以使用convex-hull代替边界框来进一步改善我们找到候选者的近似值