我一直在试图在CALayer上显示NSImage。然后我意识到我需要它显然转换为CGImage,然后显示它...在CALayer上显示NSImage
我有这样的代码似乎并不奏效
CALayer *layer = [CALayer layer];
NSImage *finderIcon = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kFinderIcon)];
[finderIcon setSize:(NSSize){ 128.0f, 128.0f }];
CGImageSourceRef source;
source = CGImageSourceCreateWithData((CFDataRef)finderIcon, NULL);
CGImageRef finalIcon = CGImageSourceCreateImageAtIndex(source, 0, NULL);
layer.bounds = CGRectMake(128.0f, 128.0f, 4, 4);
layer.position = CGPointMake(128.0f, 128.0f);
layer.contents = finalIcon;
// Insert the layer into the root layer
[mainLayer addSublayer:layer];
为什么?我怎样才能使这个工作?
其实,如果你是在10.6,也可以只设置了`CALayer`的内容到`NSImage`而不是`CGImageRef` .... – NSGod 2011-02-09 23:54:11