だから私はペイントのようなアプリを作成しています。線がギザギザにならないように、線の周りにソフトなエッジを付けたいと思います。これを簡単に行うためにrgba
、ストロークをレイヤー化します。ここにいくつかのコードがあります:
$('canvas').mousemove(function(e){
// test if user is pressing down
if(going == true){
x = e.pageX;
y = e.pageY;
// w is the line width, and the last 4 inputs are rgba for the color
draw(x,y,w+5,100,100,100,0.1);
draw(x,y,w+4,100,100,100,0.3);
draw(x,y,w+3,100,100,100,0.5);
draw(x,y,w+2,100,100,100,0.7);
draw(x,y,w+1,100,100,100,0.9);
draw(x,y,w,100,100,100,1);
};
});
最初は、これでソフト エッジが作成されますが、描画を続けると、何らかの理由でフェード インし、再びギザギザになります。これは、ぼかしがフェードインする方法をより明確に表示するjsfiddleです(ストロークの色とは異なるぼかしの色を使用することにより):http://jsfiddle.net/mj4zn/1/
質問:
なぜこれが起こっているのですか、どうすればそれを止めることができますか?
余分なコード:
draw
関数を見たい場合は、次のとおりです。
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
function draw(x,y,w,r,g,b,a){
ctx.lineWidth = w;
ctx.lineTo(x, y);
ctx.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
ctx.stroke()
};