如何在鼠标按下或鼠标拖动或鼠标向上获取选定的贝塞尔路径



我正在绘制多个 NSBezierpath,然后我正在尝试擦除它们,以便在鼠标按下事件中如何识别哪个贝塞尔路径被击中?我的bezierpath是NSObject的自定义子类。

好吧,使用-locationInWindowmouseDown:方法中的NSEvent获取鼠标单击点,使用-convertPoint:fromView:将窗口坐标的单击点转换为视图坐标,从上到下循环遍历正在绘制的NSBezierPath对象,并调用-containsPoint:以测试每条路径上的命中。 如果您的贝塞尔路径是封闭的、填充的路径,这很有效。 如果它们是未闭合或描边路径,则需要下拉一个级别并使用 CGPathCreateCopyByStrokingPath() ,也许还有CGPathCreateCopyByDashingPath() ,来获取填充样式的贝塞尔路径,该路径描述了在描边原始路径时填充的区域的轮廓(请参阅如何获取 Quartz 用于描边 NSBezierPath 的路径)。

但是,我不确定你所说的"我的bezierpath是NSObject的自定义子类"是什么意思;如果你正在做其他复杂的事情,而不仅仅是使用NSBezierPath,那么你将需要描述你在做什么(以及为什么),并为此发布代码。

相关内容

  • 没有找到相关文章

最新更新