0

是否可以更改 NSImage 的来源?如果是这样,我将如何去做。我在常规笛卡尔坐标系中有一些坐标为负值,我试图在 NSImage 中的相应点绘制它们,但由于原点位于(0,0),所以有些缺失。

编辑:假设我有一个绘图方面需要在点(-10,-10)处对图像进行,目前这没有出现。有没有办法解决这个问题?

4

2 回答 2

1

如果它就像在 iOS 中一样(您可能需要调整一些代码)并且如果我的记忆力仍然很好,那么您必须这样做,因为originreadOnly
CGRect myFrame = yourImage.frame;
myFrame.origin.x=newX;
myFrame.origin.y=newY;
yourImage.frame = myFrame;

于 2013-01-15T17:58:39.987 回答
0

我认为您将 NSImage 与它的容器混淆了。NSImage 没有边界或框架,因此没有来源。它确实有一个大小 ,可以表示其 birtmap 表示的像素尺寸(如果有的话),或者可以表示它的边界框(如果它是矢量图像)。在 (-10,-10) 的像素位置绘制图像实际上没有任何意义。

NSImage 显示在容器中(通常是 NSImageView),容器的 bounds.origin 将指示图像相对于 imageView 的位置,但您不能修改超出位图平面边缘的像素。

在任何情况下,您都可能希望使用子类 NSView,您可以在其中覆盖自定义绘图的 drawRect 方法。NSView确实有一个 bounds.origin 但这与您的绘图坐标无关,而是与绘制的内容作为一个整体与视图边界框的位置有关。您将绘制到的坐标系将参考您的图形上下文,该上下文将(通常)将原点 (0,0) 固定到左下角 (OSX) 或左上角 (iOS)。如果您尝试在笛卡尔平面上表示负点,则需要应用平移变换将您的点映射到该正坐标空间中。

我试图用几句话来解释,Apple 在他们的Quartz 2D Programming Guide中详细解释了一些东西。

于 2013-01-15T23:47:52.683 回答