我正在尝试实现一个由draw
方法绘制的程序图像,该方法能够以任何分辨率绘制完美的图像。想象一下程序化纹理,无需拉伸或插值即可调整大小以填充任何区域。
为此,我创建了一个实现绘图代码的自定义NSImageRep
。此方法中的代码可以访问图像代表的大小,因此可以为每个大小重绘自身。要显示图片,我将此NSImageRep
分配给NSImage
,然后将其传递给NSImageView
。
现在问题是NSImage
不会调整大小。我的意思是它会拉伸和插值以填充NSImageView
,但NSImage
的大小不会改变,因此其NSImageRep
绘图代码总是绘制为{{{{ 1}}最初创建。我可以更改NSImage
的大小,它会
换句话说,我已经成功实现了NSImage
,它可以在任何尺寸下正确绘制(无插值)。所以我的问题是,如何让NSImage
自动调整大小以匹配它所放置的NSImage
的大小?
理想情况下,我想将此作为NSImageView
上的类别实现,但我不确定如何继续。
N.B。我知道听起来我只是想实现一个自定义NSImage
,但大局是我正在尝试从iOS NSView
复制resizableImageWithCapInsets:
方法并创建一个实现OS X'UIImage
。
答案 0 :(得分:0)
忘掉NSImageRep
您想要使用的只是NSImage
+ (id)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler
这将使您能够做您想做的事。