2

アプリケーションで半透明のフローティング HUD ウィンドウを作成しています。これは、Quick Look HUD ウィンドウのように見えることを目的としており、具体的には Enter/Exit フルスクリーン イメージを使用しています。Cocoa は NSEnterFullScreenTemplate (および NSExitFullScreenTemplate) テンプレートを提供します。これらはこの目的を果たし、縁取りされたボタンで正常に機能します。

ただし、境界線を削除してボタンを暗い背景に配置するとすぐに、暗い灰色のままになり、見にくくなります。クイックルックのように白くしたいです。これを行う組み込みの方法はありますか、それとも自分で画像のスケーリングとカラーリングに頼る必要がありますか?

4

2 に答える 2

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];
}
于 2011-06-09T11:50:43.780 に答える
1
[NSCell setBackgroundStyle: NSBackgroundStyleDark]

NSBackgroundStyleDark

背景は暗い色です。明るいコンテンツは、暗い背景とよく対照的です。

于 2011-07-15T18:56:51.487 に答える