NSBezierPath笔划颜色错误

时间:2015-09-16 08:55:48

标签: cocoa colors border xamarin.mac nsbezierpath

我想使用NSViewDrawRect的自定义NSBezierPath周围绘制1px宽的边框:

BorderColor.Set();
var path = NSBezierPath.FromRect(theRect);
path.LineWidth = 1;
path.Stroke();

现在BorderColor设置为NSColor.Gray,我可以在调试时看到RGBA颜色代码:(127,127,127,255)
但是屏幕上出现的1px宽边框会出现这种颜色:(194,194,194,255)
当我将path.LineWidth设置为3时,我可以看到3条线,中间有错误的颜色(194 ..),2个颜色的翅膀(135,135,135,255) - 它足够接近通缉(127。 。)颜色还可以。
当我使用4个1px宽的矩形代替边框时,Fill这4个rects,我也得到(135 ..)颜色,再次没问题。

我可以使用这个基于矩形的解决方案,我只是想知道:
有没有办法使用NSBezierPath.Stroke实现1px宽边框的正确颜色?

1 个答案:

答案 0 :(得分:2)

假设您正确设置了笔触颜色(我们不知道BorderColor是如何设置的),您可能会在屏幕上测量颜色值,其中 - 特别是对于细线 - 可能已经消除锯齿,因此您不会看到原始颜色,而是看到抗锯齿算法的输出。

将宽度设置为大于10的宽度,并测量“blob”中间的颜色。确保你不会追逐抗锯齿的文物..