NSBezierPath 描边颜色错误
NSBezierPath Stroke color is wrong
我想用 NSBezierPath
:
在 DrawRect
中围绕我的自定义 NSView
绘制一个 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. .)颜色要ok
当我使用四块 1px 宽的矩形代替边框时,Fill
这 4 个矩形,我也得到了 (135..) 颜色,这又可以了。
我可以使用这个基于矩形的解决方案,我只是想知道:
有没有办法用 NSBezierPath.Stroke
?
为 1px 宽边框实现正确的颜色
假设您正确设置了描边颜色(我们看不到 BorderColor
是如何设置的)可能是您测量屏幕上的颜色值的情况,特别是对于细线 - 可能已经消除锯齿,因此您看不到原始颜色,而是看到抗锯齿算法的输出。
将宽度设置为更大的值,例如 10,并测量 'blob' 中间的颜色,以确保您没有追求抗锯齿效果..
我想用 NSBezierPath
:
DrawRect
中围绕我的自定义 NSView
绘制一个 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. .)颜色要ok
当我使用四块 1px 宽的矩形代替边框时,Fill
这 4 个矩形,我也得到了 (135..) 颜色,这又可以了。
我可以使用这个基于矩形的解决方案,我只是想知道:
有没有办法用 NSBezierPath.Stroke
?
假设您正确设置了描边颜色(我们看不到 BorderColor
是如何设置的)可能是您测量屏幕上的颜色值的情况,特别是对于细线 - 可能已经消除锯齿,因此您看不到原始颜色,而是看到抗锯齿算法的输出。
将宽度设置为更大的值,例如 10,并测量 'blob' 中间的颜色,以确保您没有追求抗锯齿效果..