私は描画パッドを持っており、quadraticCurveTo を使用してすべての線と曲線を作成しています。マウスを速く動かすと線が細くなるようにします。ただし、ペンの速度を計算して曲線の太さを変更するようなことをすると、各曲線の太さが異なり、太さが滑らかに変化しません。これを行う別の方法はありますか?
言い換えれば、quadraticCurveTo は設定された太さでのみ曲線を描き、曲線全体の太さを変更することはできませんか?
はいの場合、線の太さを変更できる別の方法を考えてもらえますか?
ここにjsfiddleがあります:
曲線を描画するコードの主要部分は次のとおりです -
if (isMouseDown){
++i;
X[i] = e.pageX;
Y[i] = e.pageY;
var x1 = X[i-2];
var y1 = Y[i-2];
var x2 = X[i-1];
var y2 = Y[i-1];
var x3 = X[i];
var y3 = Y[i];
var mid1x = (x1 + x2)/2;
var mid1y = (y1 + y2)/2;
var mid2x = (x2 + x3)/2;
var mid2y = (y2 + y3)/2;
var distance = Math.pow((Math.pow(mid2x-x2,2) + Math.pow(mid2y-y2,2)),2) + Math.pow((Math.pow(x2-mid1x,2) + Math.pow(y2-mid1y,2)),2);
var velocity = distance/2;
if(i>1)
{
if (velocity<1)
{ drawQuadraticThreePoints("black", 10, mid1x, mid1y, x2, y2, mid2x, mid2y);
}
else
{ drawQuadraticThreePoints("black", 10/velocity, mid1x, mid1y, x2, y2, mid2x, mid2y);
}
}
}
function drawQuadraticThreePoints (color, thickness, x1,y1,x2,y2,x3,y3) {
context.strokeStyle = color;
context.lineWidth = thickness;
context.beginPath();
context.moveTo(x1,y1);
context.quadraticCurveTo(x2,y2,x3,y3);
context.stroke();
}