这是我要完成的任务:我正在开发一个开源 TI 计算器模拟器,我目前正在尝试添加皮肤支持。皮肤图像只是一个 NSImageView,其图像设置为皮肤图像。我覆盖了 mouseDown: 方法并使用 convertPointFromBase: 以 locationInWindow 返回值作为要转换的点获取鼠标在 NSImageView 坐标中的位置。
然后我使用 bestRepresentationForDevice: 和一个 nil 参数从 NSImageView 中获取底层 NSBitmapImageRep。最后,我在 NSBitmapImageRep 上调用 getPixel:atX:y 并使用 point.x 和 point.y 作为位置。
然而,NSImageView 的原点从左下角开始(像往常一样),而 NSBitmapImageRep 的坐标从左上角开始。我似乎找不到一种明显的方法来弥补这一点,因此按钮点击的 HitTest 无法正常运行。任何帮助是极大的赞赏。
最佳答案
我从未考虑过在我的 NSImageView 子类中覆盖 isFlipped 以返回 YES。这就解决了这个问题。
关于objective-c - 将 NSImageView 中单击的 NSPoint 转换为更正底层 NSBitmapImageRep 中的像素坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2114923/