キャンバスに円を描こうとしていますが、次のように生成されます。
、ズーム:
なぜこれが起こっているのかはわかりませんが、以前にその効果を見たことがあり、部分的なピクセルに関係していると思われます(私はそうしていませんが)。実際の例は、このjsfiddleで見ることができます。
コードを要約すると、関数を使用して円を描画しています。内側と外側の両方のエッジを徐々に内側に描画し、アルファを調整します。コードは以下のとおりです。
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();
}
};
放射状グラデーションを使用してこの問題を解決できると思いますが (線の幅によっては、より高速になると思います)、上記の影響が発生する理由を理解したいと思います。