首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击NSBezierPath

单击NSBezierPath
EN

Stack Overflow用户
提问于 2013-09-01 12:55:47
回答 1查看 533关注 0票数 0

我在我的NSImageView上画了一条NSBezierPath线。我创建NSBezierPath对象,设置moveToPoint,设置lineToPoint,设置setLineWidth:,然后在我的NSImageView子类的drawRect中调用[myNSBezierPath stroke]。这一切都如我所愿,但我似乎不能使用containsPoint:方法……我试着实现

代码语言:javascript
复制
if([myNSBezierPath containsPoint:[theEvent locationInWindow]]{
   //do something
}

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

干杯。

EN

回答 1

Stack Overflow用户

发布于 2013-09-01 13:53:26

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

另外,请参阅containsPoint:文档:

此方法根据路径本身及其包围的区域检查点。在确定封闭区域中的命中时,此方法使用非零缠绕规则(NSNonZeroWindingRule)。它不考虑用于描边路径的线条宽度。

重点是我的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18555380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档