javascript - 无法删除 HTML5 canvas arc 上的轮廓

标签 javascript css html canvas automatic-ref-counting

我正在尝试使用 HTML5 Canvas Arc 制作一种进度条。

我遇到的问题是我的圆弧周围有一个黑色轮廓,我无法更改其颜色。下图显示了我的意思。

enter image description here

我使用的代码如下。

function drawArmor( percent ) {
    var canvas = document.getElementById('ArmorCanvas');
    var context = canvas.getContext('2d');
    var radius = 36;
    var startAngle = (3 * Math.PI) / 2;
    var percentLeft = 1;
    var endAngle = -(Math.PI/2) + (Math.PI * 2 ) * ( 1 - percent );

    context.clearRect(0, 0, canvas.width, canvas.height);
    context.lineWidth = 1;
    context.lineCap = 1;
    context.strokeStyle = '#FFF';
    context.arc(100, 100, radius, startAngle, endAngle, true);
    context.stroke();
}

function drawHealth( percent ) {
    var HealthText = document.getElementById( "HealthText" );
    HealthText.innerHTML = ( percent * 100 ) + "%";

    var canvas = document.getElementById('HealthCanvas');
    var context = canvas.getContext('2d');
    var radius = 26;
    var startAngle = (3 * Math.PI) / 2;
    var endAngle = -(Math.PI/2) + (Math.PI * 2 ) * ( 1 - percent );

    context.clearRect(0, 0, canvas.width, canvas.height);
    context.lineWidth = 1;
    context.lineCap = 1;
    context.strokeStyle = '#00FE67';
    context.arc(100, 100, radius, startAngle - 0.00001, endAngle + 0.00001, true);
    context.stroke();
}

感谢任何帮助,谢谢。

最佳答案

哎呀?

您提供的代码不会绘制您提供的图像,因此我假设您使用的是导致环形伪影的不同代码。

无论如何!

我确实看到您没有以 beginPath 开始您的路径命令(您的 context.arc 是一个路径命令)。

缺少 beginPath 会导致使用每个新的 context.stroke 命令重新绘制路径。

过度绘制的累积会导致您描述的那种伪像。

伪影可能是由于笔划上的抗锯齿重复 overdraw 造成的。

所以...

context.beginPath 放在 context.arc 命令之前,工件可能会消失。

如果工件没有消失,我们将需要查看您的实际代码。

关于javascript - 无法删除 HTML5 canvas arc 上的轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726110/

相关文章:

javascript - 当鼠标接近时更改背景

javascript - TypeScript:类组合

javascript - 监听元素禁用事件

HTML5 视频上的 jQuery 叠加图像

javascript - 当光标离开输入框#select-or-enter-category时,此代码检查下拉列表中是否存在给定的输入

javascript - 如何将vue js数据传递给php变量

javascript - 如何创建一个由 0 和 1 组成的矩阵,使得行和列之和达到特定值?

css - 如何防止切割背景?

html - Bootstrap 全 Angular 下拉菜单

html - 使连续多个链接具有相同的动态高度