我正在创建一个类似于画图软件的应用程序,希望线条周围有柔和的边缘,以免出现锯齿。为了轻松实现这一点,我使用 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()
};