如何从NSAttributedString创建剪贴蒙版?

时间:2011-04-02 21:46:45

标签: macos core-graphics quartz-graphics

我有一个NSAttributedString,我想将其绘制到CGImage中,以便稍后我可以将CGImage绘制到NSView中。这是我到目前为止所做的:

// Draw attributed string into NSImage
NSImage* cacheImage = [[NSImage alloc] initWithSize:NSMakeSize(w, h)];
[cacheImage lockFocus];
[attributedString drawWithRect:NSMakeRect(0, 0, width, height) options:0];
[cacheImage unlockFocus];

// Convert NSImage to CGImageRef
CGImageSourceRef source = CGImageSourceCreateWithData(
    (CFDataRef)[cacheImage TIFFRepresentation], NULL);
CGImageRef img =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

我没有使用 - [NSImage CGImageForProposedRect:context:hints]因为我的应用必须使用10.5 sdk。

当我使用CGContextDrawImage将其绘制到我的NSView中时,它会在文本周围绘制透明背景,从而导致窗口后面的内容显示出来。我想我想创建一个剪贴蒙版,但我无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

这听起来像你的混合模式,它设置为Copy而不是SourceOver。看看the CoreGraphics blend mode documentation