我正在尝试在画布上画一个圆圈,它的生成方式如下:
,并放大:
我不确定为什么会发生这种情况,尽管我之前已经看到过效果并且我怀疑这与部分像素有关(尽管我没有这样做)。在这个jsfiddle可以看到一个工作示例。
总结一下代码,我正在使用一个函数来绘制圆圈。我逐渐向内绘制内部和外部边缘,同时调整 alpha。代码如下:
function drawCircle(x, y, radius, startAngle, endAngle, antiClockwise, lineWidth, r, g, b, a) {
c.beginPath();
var w = Math.abs(lineWidth / 2);
var alphaFactor = a / w;
var alpha = alphaFactor;
var outer = radius + w;
var inner = radius - w;
// draw centre line
c.lineWidth = 1;
c.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
c.arc(x, y, radius, startAngle, endAngle, true);
c.stroke();
for(i = 0; i < w; i++, inner++, outer--, alpha += alphaFactor) {
// draw inner
c.beginPath();
c.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')';
c.arc(x, y, inner, startAngle, endAngle, true);
c.stroke();
// draw outer
c.beginPath();
c.arc(x, y, outer, startAngle, endAngle, true);
c.stroke();
}
};
我相信我可以使用径向渐变来解决这个问题(我认为会更快,具体取决于线的宽度),但是我想了解为什么会出现上面显示的影响。