如何使NSView的背景图像不重复?

时间:2012-06-27 17:30:11

标签: objective-c macos cocoa

我希望复制以下CSS代码获得的效果:

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);
}

(我为我糟糕的英语道歉)

2 个答案:

答案 0 :(得分:4)

查看NSImage class 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);

答案 1 :(得分:0)

只需使用NSImage drawInRect:fromRect:operation:fraction:在视图中绘制图像,而不是使用图案颜色填充矩形。