【发布时间】:2021-11-11 22:43:00
【问题描述】:
谁能解释一下为什么画布不服从颜色选择以及如何修复它以使其绘制为“真实”颜色? 我知道画布使用 0.5 像素坐标,所以我尝试使用 0.5 增量进行绘制,但它仍然使用时髦的颜色绘制(使用 ColorCop 放大并检查每个像素的颜色:
这是一个小sn-p,它应该画蓝线,两条线并排,第三行1像素远,结果只有第一行是真正的蓝色,其他都是紫色或更糟,包括第一条/最后一条第一行像素:
const canvas = document.getElementById("line"),
ctx = canvas.getContext("2d");
canvas.width = canvas.height = 100;
ctx.strokeStyle = 'blue';
ctx.lineCap = "square";
ctx.imageSmoothingEnabled = false;
ctx.moveTo(10.5, 40.5);
ctx.lineTo(80.5, 40.5);
ctx.moveTo(10.5, 41.5);
ctx.lineTo(80.5, 41.5);
ctx.moveTo(10.5, 43.5);
ctx.lineTo(80.5, 43.5);
ctx.stroke();
<canvas id="line"></canvas>
我的显示器分辨率为 2560x1440,100% 缩放。不使用系统/浏览器/软件或任何类型的缩放/比例。 如果我在 MS Paint 中绘制一个像素,我会在显示器上看到一个像素,没有抗锯齿,没有伪影。
【问题讨论】:
-
建议的重复主题不相关,实际上该主题中接受的答案使我的情况更糟。我的显示分辨率是 1440p,系统缩放设置为 100%
-
如果那里的答案使问题变得更糟,那么它是相关的。我们需要更多信息才能为您提供帮助。请在您的问题中直接以edit 的形式包含所有这些信息。也就是说,我们需要在您的操作系统上设置真正的分辨率(不是任何品牌的 NNNp)、您的网络浏览器的缩放级别、
devicePixelRatio输出的值以及您尝试使用除 ColorCop 之外的其他应用程序。跨度>