我正在尝试实现一个由draw方法绘制的编程图像,该方法能够在任何分辨率下绘制完美的图像。考虑一个编程式纹理,它可以调整大小以填充任何区域,而不需要拉伸或插值。
为此,我创建了一个实现绘图代码的自定义NSImageRep。此方法中的代码可以访问图像表示的大小,因此它可以针对每个大小重新绘制自身。为了显示图像,我将这个NSImageRep赋值给一个NSImage,然后将它传递给一个NSImageView。
现在的问题是NSImage不会调整大小。我的意思是,它会拉伸和插值以填充NSImageView,但是NSImage的大小不会改变,因此它的NSImageRep绘制代码总是按照最初创建NSImage时的大小绘制。我可以更改NSImage的大小,它将
换句话说,我已经成功地实现了一个NSImage,它可以在任何大小下正确地绘制自己(不需要插值)。所以我的问题是,如何让NSImage自动调整自身大小,使其与所放入的NSImageView的大小相匹配?
理想情况下,我希望将其作为NSImage上的一个类别来实现,但我不确定如何继续。
注意:我知道这听起来像是我只是想实现一个自定义的NSView,但大局是我试图复制iOS的UIImage中的resizableImageWithCapInsets:方法,并为OS X的NSImage创建一个实现。
发布于 2014-01-12 20:19:35
忘了NSImageRep吧
您想要使用的只是NSImage
+ (id)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler这将使您能够做您想做的事情。
https://stackoverflow.com/questions/14703188
复制相似问题