3

我在 NSRect 中绘制图像时遇到了困难,下面的代码在所需位置创建了一个 NSRect 并放入了一个图像。问题是图像是一个带有透明区域的圆圈,这些区域被填充为黑色,所以而不是一个圆圈,我有一个黑色正方形,里面有圆圈 img ......

- (void)drawRect:(NSRect)dirtyRect{

NSImage *bg = [NSImage imageNamed:@"citydot_c1.png"];
NSRect city = NSMakeRect(10, 10, 8, 8);
[bg drawInRect:city fromRect:NSZeroRect operation:NSCompositeSourceAtop fraction:1.0f];

NSFrameRect(city);
}

所以基本上,我需要一种方法来删除 NSRect 的背景颜色,我认为......

有人有什么想法吗?

4

1 回答 1

3

您可能想使用 Porter-Duff "Over" 来合成图像:

[bg drawInRect:city fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];

使用此混合操作,您可以获得正常的透明度合成。

于 2012-10-23T21:14:44.043 回答