在 Safari 中重新绘制时画布形状变得锯齿

发布于 2024-10-11 05:28:05 字数 923 浏览 4 评论 0原文

我正在使用画布绘制一个简单的进度指示器。当第一次绘制元素时,它看起来很好并且抗锯齿,但是当第二次绘制时,它就失去了抗锯齿功能。有人知道这里会发生什么吗?

function drawProgress(id, percent) {
            var selected = $(safeID(id)).is('.selected');

            var canvas = $(safeID("CANVAS_" + id));
            var ctx = $(canvas)[0].getContext('2d');
            ctx.clearRect();

            if ( selected ) {
                ctx.fillStyle = "#ffffff";
                ctx.strokeStyle = "#ffffff";
            }
            else {
                ctx.fillStyle = "#99a7ca";
                ctx.strokeStyle = "#99a7ca";
            }

            ctx.beginPath();
            ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI, false);
            ctx.fill();

            ctx.beginPath();
            ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI*2.0, false);
            ctx.stroke();
        }

I'm drawing a simple progress indicator using canvas. When the element is drawn for the first time it looks all nice and anti-aliased, but when drawn a second time, it loses it's anti-aliasing. Anyone know what could be going on here?

function drawProgress(id, percent) {
            var selected = $(safeID(id)).is('.selected');

            var canvas = $(safeID("CANVAS_" + id));
            var ctx = $(canvas)[0].getContext('2d');
            ctx.clearRect();

            if ( selected ) {
                ctx.fillStyle = "#ffffff";
                ctx.strokeStyle = "#ffffff";
            }
            else {
                ctx.fillStyle = "#99a7ca";
                ctx.strokeStyle = "#99a7ca";
            }

            ctx.beginPath();
            ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI, false);
            ctx.fill();

            ctx.beginPath();
            ctx.arc(canvas.width()/2.0, canvas.height()/2.0, canvas.width()/2.0-1, 0, Math.PI*2.0, false);
            ctx.stroke();
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魂归处 2024-10-18 05:28:05

您需要为 clearRect 指定尺寸。

You need to specify dimensions to clearRect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文