使用模板图像的HUD按钮

时间:2011-06-04 14:25:12

标签: cocoa macos nsimage hud

我正在我的应用程序中构建一个半透明的浮动HUD窗口,它看起来像Quick Look HUD窗口,特别是使用Enter / Exit全屏图像。 Cocoa提供NSEnterFullScreenTemplate(和NSExitFullScreenTemplate)模板,用于此目的,并在边框按钮上正常工作。

一旦我移除边框并将按钮放在深色背景上,它就会保持深灰色,并且难以看清。我想把它变成白色,就像在Quick Look中一样。有没有内置的方法来做到这一点,或者我是否必须自己使用缩放和着色图像?

2 个答案:

答案 0 :(得分:5)

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

+(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 :(得分:1)

[NSCell setBackgroundStyle: NSBackgroundStyleDark]

NSBackgroundStyleDark

背景为深色。 光线内容与深色背景形成鲜明对比。