2011-06-04 78 views
2

我在我的应用程序中构建了半透明的浮动HUD窗口,该窗口旨在看起来像Quick Look HUD窗口,具体使用Enter/Exit全屏图像。 Cocoa提供了NSEnterFullScreenTemplate(和NSExitFullScreenTemplate)模板,它可以用于这个目的,并且可以很好地处理边界按钮。使用模板图像的HUD按钮

只要我删除边框并将按钮放在深色背景上,它就会保持深灰色,并且很难看清楚。我想让它变成白色,就像“快速查看”一样。有没有一种内置的方式来做到这一点,或者我必须自己对图像进行缩放和着色?

+0

你能发表一个截图来展示问题吗? – 2011-06-05 00:30:28

回答

5

我最终编写了一个NSImage类的类方法,它返回所需大小和所需颜色的模板图像(基本上是自己做的,因为我不认为API提供了这种方法)。

+(NSImage *)templateImage:(NSString *)templateName 
       withColor:(NSColor *)tint 
        andSize:(CGSize)targetSize 
{ 
    NSImage *template = [NSImage imageNamed:templateName]; 
    NSSize size = (CGSizeEqualToSize(targetSize, CGSizeZero) 
        ? [template size] 
        : targetSize); 
    NSRect imageBounds = NSMakeRect(0, 0, size.width, size.height); 

    NSImage *copiedImage = [template copy]; 
    [copiedImage setTemplate:NO]; 
    [copiedImage setSize:size]; 

    [copiedImage lockFocus]; 

    [tint set]; 
    NSRectFillUsingOperation(imageBounds, NSCompositeSourceAtop); 

    [copiedImage unlockFocus]; 

    return [copiedImage autorelease]; 
} 
1
[NSCell setBackgroundStyle: NSBackgroundStyleDark] 

NSBackgroundStyleDark

的背景是暗的颜色。 浅色内容与深色背景形成鲜明对比。