我有这个代码
can = document.getElementById('canvas');
can.width = 500;
can.height = 500;
var ctx = can.getContext('2d'); //Выбрать пространство
//Функция рисования
$( "#canvas" ).dblclick(function() {
ctx.closePath();
ctx.fill();//Заполнение
ctx.beginPath();
});
can.addEventListener('mousedown', function(e){
ctx.strokeStyle = 'red';
ctx.fillStyle = 'red' //Цвет
ctx.lineTo(e.clientX, e.clientY); //Координаты линий
ctx.lineWidth = 10;//Толщина линий
ctx.arc(e.clientX, e.clientY, 10 / 20 ,0, Math.PI * 2); //Круг
ctx.stroke();
});
#canvas{
background-color:#46bba4;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<canvas id="canvas" style="display: block;"></canvas>
之后,问题是为什么画笔在急转弯时会移到一边。为什么在改变 can.width 的大小时;和 can.height; 画笔的中心远离光标的地方 谁能帮忙解决这个问题?
在您的情况下,事实证明所有线条(圆圈和您绘制的线条)都被绘制为一条线的一部分,因此您不期望的行为
miter(曲线部分的连接类型,这是在画布上绘制线条的默认值),类型可以更改为round,连接将被舍入。在计算点击坐标时,您没有考虑画布在屏幕上的位置。
要在计算坐标时考虑滚动,请使用
e.pageX和e.pageY