2011-06-04 49 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

的背景是暗的顏色。 淺色內容與深色背景形成鮮明對比。