0
所以我试图在HTML5画布中创建一个绘图工具,笔划的重量越大,移动鼠标的速度越快,移动的速度越慢。我使用ctx.lineTo(),但我第一次尝试注意到,如果我也迅速采取行动,厚度的变化被注册为明显的方形增量(而非重量的平稳增长)平滑的线条宽度在画布行中更改为
所以我改变了ctx.lineJoin和ctx.lineCap以“圆”,它得到了更好的
一点,但是这仍然不是一帆风顺的,我想。我对如何使重量的变化拍摄这样的事情
任何意见有点平滑的将是巨大的!这里的工作演示:http://jsfiddle.net/0fhag522/1/
和这里的我的‘点’对象(笔)和我平局功能的预览:
var dot = {
start: false,
weight: 1,
open: function(x,y){
ctx.lineJoin = "round";
ctx.lineCap = "round";
ctx.beginPath();
ctx.moveTo(x,y);
},
connect: function(x,y){
ctx.lineWidth = this.weight;
ctx.lineTo(x,y);
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.moveTo(x,y);
},
close: function(){
ctx.closePath();
}
}
function draw(){
if(down){
if(!dot.start){
dot.close();
prevx = mx; prevy = my;
dot.open(mx,my);
dot.start=true;
}
else {
var dx = (prevx>mx) ? prevx-mx : mx-prevx;
var dy = (prevy>my) ? prevy-my : my-prevy;
dot.weight = Math.abs(dx-dy)/2;
dot.connect(mx,my);
prevx = mx; prevy = my;
}
}
}