objective-c - 将 NSImageView 中点击的 NSPoint 转换为更正底层 NSBitmapImageRep 中的像素坐标

标签 objective-c cocoa nsimageview nsbitmapimagerep

这就是我想要完成的事情:我正在开发一个开源 TI 计算器模拟器,目前我正试图在其中添加皮肤支持。皮肤图像只是一个 NSImageView,其图像设置为皮肤图像。我覆盖了 mouseDown: 方法并使用 convertPointFromBase: 获取鼠标在 NSImageView 坐标中的位置,并将 locationInWindow 返回值作为要转换的点。

然后,我使用带有 nil 参数的 bestRepresentationForDevice: 从 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/

相关文章:

objective-c - 如何读取和解析 .xml 文件

ios - NoMethodError - 未定义的方法 `path' for nil :NilClass Cocoapods version 1. 0

ios - UIWebView 抛出帧加载中断错误

iphone - 带有自定义 View 选择器的 UIBarButtonItem init 无法正常工作

cocoa - 使用 NPAPI 接口(interface)加载 flash .swf

animation - 如何放置覆盖 NSImageView 并将其保留在 WebView 的顶部?

swift - MouseMoved 函数从未被调用

iphone - 使用 Core Data 实现枚举的最佳方法

cocoa - 如何平移和缩放 NSImage?

swift - 将 CAShapeLayer 转换为在 NSImageView 中使用