2

我想复制以下 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);
}

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

4

2 回答 2

4

看看NSImage 类参考可以使用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);
于 2012-06-27T18:16:02.557 回答
0

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

于 2012-06-27T18:15:52.697 回答