cocoa - NSBezierPath 描边颜色错误

标签 cocoa colors border xamarin.mac nsbezierpath

我想在 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/

相关文章:

algorithm - 创建色轮的函数

javascript - 如何更改 HTML 标签颜色,如 h1、h2、p 等,但保持某些 h1、h2 标签不变?

html - 在边框图像中添加多个渐变?

vba - 基于自动字体颜色的Excel总和

cocoa - NSManagedObjectContextObjectsWillChangeNotification

objective-c - Cocoa:SBJSON 检查字段是否存在

Cocoa - 在 Finder 中打开文件包

jquery - 除固定div外包含css过渡边框

html - 内表内容与外表不对齐

cocoa - cocoa 有免费或商业的 DVD 刻录机 sdk 吗?