1

我试图在我的 TableView 中非常简单地绘制一个透明的突出显示颜色:

if ([self isSelected]){
    self.alphaValue = 0.5f;
    NSColor * fillColor = [NSColor colorWithCalibratedRed: 100.0f/256.0f 
                                                    green: 100.0f/256.0f 
                                                     blue: 100.0f/256.0f 
                                                    alpha: 0.5];


    [fillColor drawSwatchInRect:dirtyRect];

}

不过,它画了一些奇怪的东西,原始颜色和新的 alpha 颜色之间的对角线。我知道解决方案可能很简单——但我似乎无法弄清楚它是什么。有任何想法吗?

4

1 回答 1

2

我认为这正是drawSwatchInRect:设计的目的。当您有任何 alpha 值时,色板会显示您的颜色与黑色(左上角)和白色(右下角)合成时的外观。无论 Apple UI 组件在何处显示颜色,它们都会这样做。如果您使用的颜色不是灰色阴影,则更明显。

具有不同不透明度的色样

如果你想用特定颜色填充一个矩形,让背景显示出来,试试这个:

[fillColor set];
NSBezierPath *rectPath = [NSBezierPath bezierPathWithRect:dirtyRect];
[rectPath fill];

虽然这适用于填充矩形,但请注意dirtyRect并不总是相同的形状。对于大多数绘图,您希望使用bounds正在绘制的视图。

于 2012-04-26T01:53:13.010 回答