2012-06-27 46 views
2

我想通過複製下面的CSS代碼所獲得的效果:如何讓NSView的背景圖片不再重複?

background: white url(./img/background.png) no-repeat; 

我寫了一個NSView的子類,並以這種方式覆蓋drawRect

- (void)drawRect:(NSRect)dirtyRect 
{ 
    dirtyRect = [self bounds]; 

    [[NSColor whiteColor] setFill]; 
    NSRectFill(dirtyRect); 

    [[NSColor colorWithPatternImage:[NSImage imageNamed:@"background.png"]] setFill]; 
    NSRectFill(dirtyRect); 
} 

(我爲我的英語不好道歉)

回答

4

看看NSImageclass reference。圖像可以用drawInRect:fromRect:operation:fraction:drawAtPoint:fromRect:operation:fraction:來繪製。

所以你可以使用這樣的:

[[NSImage imageNamed:@"background.png"] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1]; // Passing NSZeroRect causes the entire image to draw. 

而是這樣的:

[[NSColor colorWithPatternImage:[NSImage imageNamed:@"background.png"]] setFill]; 
    NSRectFill(dirtyRect); 
+0

我想補充一些初學者(像我一樣):你可以在'drawRect中添加的第一行:'方法您的自定義NSView子類。結果是'background.png'將被繪製爲背景。 – beipawel

0

只需使用NSImage drawInRect:fromRect:operation:fraction:在視圖中繪製圖像,而不是使用圖案顏色填充矩形。