更细 html canvas 笔划宽度
Thinner html canvas stroke width
我已将 2d context
线宽设置为其表观最小值 1:
let context = this._canvas.getContext("2d");
context.lineWidth = 1;
context.stroke();
但这仍然相当宽:可能是 20 像素。有什么办法可以减少吗?
关键是确保您拥有与实际像素数量相同的虚拟像素。更多屏幕像素和图像放大。更少的屏幕像素和图像被缩小。
放大 1 像素宽的线条会产生矩形,但是当我们缩小 1 像素宽的线条时会发生什么?简单的答案是它变得不那么强烈了。
以下示例绘制了 2 个相同大小的画布。不过,关键的区别在于它们各自拥有的像素缓冲区的大小。第一个有 10,000 个像素 - 100x100。第二个只有 100 个像素 - 10x10。即使我们刚刚绘制了一条 1 像素宽的线,您也可以看到这些线的外观非常不同。
window.addEventListener('load', onLoaded, false);
function onLoaded(evt)
{
let can = document.querySelector('canvas');
let ctx = can.getContext('2d');
ctx.moveTo(0,0);
ctx.lineTo(can.width,can.height);
ctx.stroke();
let can2 = document.querySelectorAll('canvas')[1];
let ctx2 = can2.getContext('2d');
ctx2.moveTo(0,0);
ctx2.lineTo(can2.width,can2.height);
ctx2.stroke();
}
canvas
{
width: 100px;
height: 100px;
}
<canvas width=100 height=100></canvas><br>
<canvas width=10 height=10></canvas>
我已将 2d context
线宽设置为其表观最小值 1:
let context = this._canvas.getContext("2d");
context.lineWidth = 1;
context.stroke();
但这仍然相当宽:可能是 20 像素。有什么办法可以减少吗?
关键是确保您拥有与实际像素数量相同的虚拟像素。更多屏幕像素和图像放大。更少的屏幕像素和图像被缩小。 放大 1 像素宽的线条会产生矩形,但是当我们缩小 1 像素宽的线条时会发生什么?简单的答案是它变得不那么强烈了。
以下示例绘制了 2 个相同大小的画布。不过,关键的区别在于它们各自拥有的像素缓冲区的大小。第一个有 10,000 个像素 - 100x100。第二个只有 100 个像素 - 10x10。即使我们刚刚绘制了一条 1 像素宽的线,您也可以看到这些线的外观非常不同。
window.addEventListener('load', onLoaded, false);
function onLoaded(evt)
{
let can = document.querySelector('canvas');
let ctx = can.getContext('2d');
ctx.moveTo(0,0);
ctx.lineTo(can.width,can.height);
ctx.stroke();
let can2 = document.querySelectorAll('canvas')[1];
let ctx2 = can2.getContext('2d');
ctx2.moveTo(0,0);
ctx2.lineTo(can2.width,can2.height);
ctx2.stroke();
}
canvas
{
width: 100px;
height: 100px;
}
<canvas width=100 height=100></canvas><br>
<canvas width=10 height=10></canvas>