Click on NSBezierPath



我正在NSImageView上绘制一条NSBezierPath线。我正在创建NSBezierPath对象,设置moveToPointlineToPointsetLineWidth:,然后在我的NSImageView子类的drawRect中调用[myNSBezierPath stroke]。这一切都如我所愿,但我似乎无法使用containsPoint:方法。。。我试着实现

if([myNSBezierPath containsPoint:[theEvent locationInWindow]]{
   //do something
}

在我的NSImageView子类的-(void)mouseUp:(NSEvent*)theEvent中,但它从来没有反应,我确信我正在达到这一行。。。我做错什么了吗?我只需要检测NSBezierPath是否被点击。

干杯。

确保将鼠标单击位置转换到图像视图子类的坐标系中,而不是转换到窗口中的坐标系(除非它们相同)。你的bezier路径不知道它被绘制到的偏移量,所以在进行命中测试时必须考虑到这一点。

此外,来自containsPoint:文档:

此方法根据路径本身及其所在区域检查点封闭。在确定封闭区域中的命中率时,此方法使用非零绕组规则(NSNonZeroWindingRule)不需要考虑到用于绘制路径的线宽

强调我的。

相关内容

  • 没有找到相关文章

最新更新