【问题标题】:HUD Buttons using Template Images使用模板图像的 HUD 按钮
【发布时间】:2011-09-08 09:35:31
【问题描述】:

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

当我移除边框并将按钮放在深色背景上时,它会保持深灰色,并且很难看到。我想让它变成白色,就像在 Quick Look 中一样。有没有内置的方法可以做到这一点,还是我必须自己对图像进行缩放和着色?

【问题讨论】:

  • 你能发一个截图来说明这个问题吗?

标签: cocoa macos nsimage hud


【解决方案1】:

我最终编写了一个 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];
}

【讨论】:

    【解决方案2】:
    [NSCell setBackgroundStyle: NSBackgroundStyleDark]
    

    NSBackgroundStyleDark

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多