是否可以更改NSImage的原点?如果是这样的话,我该怎么做呢?我在常规笛卡尔坐标系中有一些坐标,其中一些是负值,我试图在NSImage中的对应点绘制它们,但由于原点在(0,0)处,因此缺少一些坐标。
编辑:假设我有一个绘图方面,需要在点(-10,-10)上对图像进行编辑,目前没有显示出来。有没有办法解决这个问题?
发布于 2013-01-16 07:47:53
我认为你把NSImage和它的容器搞混了。NSImage没有边界或帧,因此没有原点。它确实有一个大小,可以表示其birtmap表示的像素尺寸(如果有),或者可以表示它的边界框(如果它是一个矢量图像)。在像素位置为(-10,-10)的图像中绘制没有实际意义。
NSImage显示在容器(通常是NSImageView)中,容器的bounds.origin将指示图像相对于imageView的位置,但您不能修改位图平面边缘以外的像素。
在任何情况下,您都可能希望使用一个子类化的NSView,在这个子类化的any中,您可以覆盖自定义绘图的drawRect方法。NSView确实有一个bounds.origin,但这与绘图中的坐标无关,而是与绘制内容在视图边界框中的整体位置相关。您要在其中绘图的坐标系将参考您的图形上下文,它(通常)将原点(0,0)固定到左下角(OSX)或左上角(iOS)。如果尝试在笛卡尔平面上表示负点,则需要应用平移变换将点映射到此正坐标空间。
我试图用几句话来解释,很糟糕,苹果在他们的Quartz 2D Programming Guide中详细解释了一些事情。
发布于 2013-01-16 01:58:40
如果它类似于iOS (您可能需要对代码进行一点调整),并且我的记忆力仍然很好,那么您必须这样做,因为origin
是readOnly
CGRect myFrame = yourImage.frame;
myFrame.origin.x=newX;
myFrame.origin.y=newY;
yourImage.frame = myFrame;
https://stackoverflow.com/questions/14342733
复制相似问题