如何让NSImage自动扩展到NSImageView?

时间:2013-02-05 08:38:22

标签: cocoa core-graphics

我正在尝试实现一个由draw方法绘制的程序图像,该方法能够以任何分辨率绘制完美的图像。想象一下程序化纹理,无需拉伸或插值即可调整大小以填充任何区域。

为此,我创建了一个实现绘图代码的自定义NSImageRep。此方法中的代码可以访问图像代表的大小,因此可以为每个大小重绘自身。要显示图片,我将此NSImageRep分配给NSImage,然后将其传递给NSImageView

现在问题是NSImage不会调整大小。我的意思是它会拉伸和插值以填充NSImageView,但NSImage的大小不会改变,因此其NSImageRep绘图代码总是绘制为{{{{ 1}}最初创建。我可以更改NSImage的大小,它会

换句话说,我已经成功实现了NSImage,它可以在任何尺寸下正确绘制(无插值)。所以我的问题是,如何让NSImage自动调整大小以匹配它所放置的NSImage的大小?

理想情况下,我想将此作为NSImageView上的类别实现,但我不确定如何继续。

N.B。我知道听起来我只是想实现一个自定义NSImage,但大局是我正在尝试从iOS NSView复制resizableImageWithCapInsets:方法并创建一个实现OS X'UIImage

1 个答案:

答案 0 :(得分:0)

忘掉NSImageRep

您想要使用的只是NSImage

+ (id)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler

这将使您能够做您想做的事。