我想在 DrawRect
中使用 NSBezierPath
在我的自定义 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..)颜色就可以了。
当我使用四 block 1px 宽的矩形作为边框,并填充
这 4 个矩形时,我也得到了 (135..) 颜色,这又没问题了。
我可以使用这个基于矩形的解决方案,我只是想知道:
有没有办法使用 NSBezierPath.Stroke
实现 1px 宽边框的正确颜色?
最佳答案
假设您正确设置了描边颜色(我们看不到 BorderColor
是如何设置的),您可能正在测量屏幕上的颜色值,其中 -特别是对于细线 - 可能已进行抗锯齿处理,因此您看不到原始颜色,而是看到抗锯齿算法的输出。
将宽度设置为更大的值,例如 10,并测量“ Blob ”中间的颜色,以确保您不会追求抗锯齿伪影。
关于cocoa - NSBezierPath 描边颜色错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603932/