2013-02-05 92 views
1

我試圖實現一個由draw方法繪製的程序化圖像,該方法能夠以任何分辨率繪製完美的圖像。想象一下可以調整尺寸的程序化紋理,以填充任何區域而無需拉伸或插值。如何使NSImage自動縮放到NSImageView?

爲此,我創建了一個自定義NSImageRep,它實現了繪圖代碼。該方法中的代碼可以訪問圖像代表的大小,因此它可以爲每個大小重新繪製自己。要顯示圖像,我將此NSImageRep分配給NSImage,然後將其傳遞給NSImageView

現在的問題是NSImage不會調整大小。我的意思是它延伸並插入以填充NSImageView,但NSImage的大小不會改變,因此它的NSImageRep繪圖代碼總是繪製到最初創建NSImage的大小。我可以改變NSImage的大小,它會

換句話說,我已經成功實現了一個NSImage,它可以在任何大小(無內插)下正確繪製自己。所以我的問題是,如何使NSImage自動調整大小以匹配它放入的NSImageView的大小?

理想情況下,我想實現這個作爲NSImage類別,但我不知道如何繼續。

N.B.我知道這聽起來像我只是想實現一個自定義NSView,但重要的是我試圖從iOS'UIImage複製resizableImageWithCapInsets:方法,並創建一個OS X'NSImage的實現。

回答

0

忘掉NSImageRep

是你想用什麼只是NSImage

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

這將使你做你想要的。