2011-10-03 103 views
2

我有一個自定義NSView用於顯示背景顏色。這工作。但是,我在該圖像中保留了陰影。+ colorWithPatternImage:應保持透明度在可可

圖像的所有透明或半透明區域都呈現爲黑色。我該如何解決?

- (void)drawRect:(NSRect)dirtyRect { 
    NSColor *pattern = [NSColor colorWithPatternImage:[NSImage imageNamed:@"bg"]]; 
    [pattern setFill]; 
    NSRectFill(dirtyRect); 
} 

謝謝。

回答

5

NSRectFill()NSRectFillUsingOperation(rect, NSCompositeCopy)的快捷方式。這意味着,它與背景不會複合色彩的alpha通道,它簡單地抽入你在通過矩形源顏色相反,您應使用:

NSRectFillUsingOperation(rect, NSCompositeSourceOver); 

NSCompositeSourceOver合成操作將顯示源圖像,無論源圖像是不透明的,還是其他地方的目標圖像。