【发布时间】:2017-02-18 00:24:27
【问题描述】:
阅读relatedarticles,我尝试强制画布大小以像素为单位,为路径指定半像素,还指定了 context.translate(0.5) 但我的画布线条仍然模糊。
const ctx = canvas.getContext("2d");
ctx.translate(0.5, 0.5);
/* Function to draw HTML5 canvas line */
const drawPath = (startX, startY, endX, endY) => {
ctx.beginPath();
ctx.lineWidth = "1";
ctx.strokeStyle = "red";
ctx.moveTo(startX, startY);
ctx.lineTo(endX, endY);
ctx.stroke();
};
我哪里出错了,如何让我的线条像演示中框周围的边框一样清晰?
【问题讨论】:
-
在 Chrome imgur.com/a/515dZ 中对我来说很好
-
是的,很抱歉在 chrome 中工作可能不在 fx 中
-
查看您提供的图像。画布是显示器分辨率的一半。放大并查看 X 上的像素,DOM 线是 1 像素,但宽度仍然是字母上像素的两倍。这意味着画布被拉伸并且模糊是由于双线性过滤造成的。您要么在选项卡上放大,要么拥有视网膜显示器。将
canvas.width& 高度设置为原来的两倍,将canvas.style.width& 高度设置为 DOM 像素。去掉ctx.translate,加上ctx.scale(2,2),一切就清楚了。 -
谢谢,解决了。把它作为一个答案,我会接受:)
-
@Blindman67。 ...并且仅来自图像(!)--太棒了!
标签: javascript html canvas