簡體   English   中英

NSImage + imageWithPatternColor:和NSGradient-可可/ Mac

[英]NSImage +imageWithPatternColor: and NSGradient - Cocoa/Mac

我在這樣的自定義視圖上繪制NSGradient

- (void)drawRect: (NSRect)dirtyRect
{
    NSGradient* g = [[NSGradient alloc] initWithStartingColor: _color endingColor: [NSColor clearColor]];   
    [g drawInRect: [self bounds] angle: 90];
}

如果_color是常規顏色,例如[NSColor blueColor] ,則一切正常。 問題是_color來自圖案圖像(在這種情況下,該圖像大多數是灰色的,上面有一些奇特的像素),並且發生這種情況時,程序將繼續記錄此錯誤:

***-[NSGradient initWithColors:atLocations:colorSpace:]:顏色NSPatternColorSpace CGImageSource = 0x400367d60“)>無法轉換為顏色空間通用RGB顏色空間

_color = [NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.png"]]

圖像是完全不透明的,是png文件。 有任何想法嗎? 也許我應該更改文件類型? 我不知道...

編輯:

如果我這樣定義_color

_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]

則不會顯示漸變。 沒有。 就像我沒有drawRect:方法一樣。 有任何想法嗎?

NSGradient不適用於作為顏色之一的圖案。 那就是異常告訴你的。 它僅適用於可以轉換為RGB顏色的NSColor。 如果要使圖案淡入淡出,則必須采用另一種方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM