以下是我要完成的工作:我正在开发一个开源TI计算器模拟器,我正在尝试添加皮肤支持。皮肤图像只是一个NSImageView,其图像设置为皮肤图像。我重写了mouseDown:方法,并使用convertPointFromBase获取鼠标在NSImageView坐标中的位置:将locationInWindow返回值作为转换点。
然后我使用bestRepresentationForDevice从NSImageView获取底层NSBitmapImageRep:使用nil参数。最后,我在NSBitmapImageRep上使用point.x和point.y调用getPixel:atX:y作为位置。
但是,NSImageView的原点从左下角开始(像往常一样),而NSBitmapImageRep的坐标从左上角开始。我似乎无法找到一种明显的方法来弥补这一点,因此按钮点击的命中测试无法正常运行。非常感谢任何帮助。
答案 0 :(得分:1)
我从未考虑重写isFlipped以在我的NSImageView子类中返回YES。这解决了这个问题。
答案 1 :(得分:0)
对我来说似乎很容易,只需根据矩形的高度计算y坐标:
NSPoint pointInFlippedRect(NSPoint inPoint, NSRect aRect)
{
return NSMakePoint(inPoint.x , NSHeight(aRect) - inPoint.y);
}