我正试图在我的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颜色之间的数字线。我知道解决方案可能非常简单 - 但我似乎无法弄清楚它是什么。有什么想法吗?
答案 0 :(得分:1)
我认为这正是drawSwatchInRect:
的目的。当您有任何alpha值时,样本将显示与黑色(左上角)和白色(右下角)合成时颜色的外观。只要Apple UI组件显示颜色,他们就会这样做。如果你使用的颜色不是灰色,那就更明显了。
如果要填充具有特定颜色的矩形,请让背景显示,请尝试:
[fillColor set];
NSBezierPath *rectPath = [NSBezierPath bezierPathWithRect:dirtyRect];
[rectPath fill];
虽然这适用于填充的rects,但请注意dirtyRect
并不总是相同的形状。对于大多数绘图,您希望使用正在绘制的视图的bounds
。