我在我的NSImageView上画了一条NSBezierPath线。我创建NSBezierPath对象,设置moveToPoint,设置lineToPoint,设置setLineWidth:,然后在我的NSImageView子类的drawRect中调用[myNSBezierPath stroke]。这一切都如我所愿,但我似乎不能使用containsPoint:方法……我试着实现
if([myNSBezierPath containsPoint:[theEvent locationInWindow]]{
//do something
}在我的NSImageView子类的-(void)mouseUp:(NSEvent*)theEvent中,但是它从来没有反应过,我确信我达到了那条线……我做错了什么吗?我只需要检测NSBezierPath是否被点击了。
干杯。
发布于 2013-09-01 13:53:26
确保将鼠标单击位置转换到图像视图子类的坐标系中,而不是窗口的坐标系中(除非它们是相同的)。您的bezier路径不知道它被绘制到的偏移量,因此在执行命中测试时必须考虑到这一点。
另外,请参阅containsPoint:文档:
此方法根据路径本身及其包围的区域检查点。在确定封闭区域中的命中时,此方法使用非零缠绕规则(NSNonZeroWindingRule)。它不考虑用于描边路径的线条宽度。
重点是我的。
https://stackoverflow.com/questions/18555380
复制相似问题