作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 JavaScript 中将渐变颜色添加到描边样式 Canvas 。请帮助我,我的代码工作完美,但问题只是我一直在尝试向笔划样式添加渐变颜色,但它只是破坏了我的代码。
任何人都可以帮助将这个渐变颜色转换为描边样式
HTML
<div class="countItem minutes">
<canvas id="minutes-canvas" width="200" height="200"></canvas>
<svg width="100%" height="100%">
<circle id="outer" cx="50%" cy="50%" r="45%" fill="transparent" stroke-width="1%" stroke="#fff" />
</svg>
<h3>
<span id="minutes-value"></span><br>
<small>minutes</small>
</h3>
</div>
JAVASCRIPT
// Set Launch Date (ms)
const launchDate = new Date("May 7, 2020 00:00").getTime();
// Context object
const c = {
context: {},
values: {},
times: {}
};
// Convert radians to degrees
function deg(d) {
return (Math.PI / 180) * d - (Math.PI / 180) * 90;
}
function render() {
c.context.minutes.clearRect(0, 0, 200, 200);
c.context.minutes.beginPath();
c.context.minutes.strokeStyle = "#bbee2b";
c.context.minutes.arc(100, 100, 90, deg(0), deg(6 * (c.times.minutes - 60)));
c.context.minutes.lineWidth = 12;
c.context.minutes.lineCap = "round";
c.context.minutes.stroke();
}
function init() {
// Get 2D contexts
c.context.minutes = document.getElementById('minutes-canvas').getContext('2d');
// Get displayed values
c.values.minutes = document.getElementById('minutes-value');
setInterval(function () {
// Get todays date and time (ms)
const now = new Date().getTime();
// Get distance from now to launchDate
const distance = launchDate - now;
// Time calculations
c.times.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
c.values.minutes.innerText = c.times.minutes;
render(); // Draw!
}, 1000);
}
init();
最佳答案
您可以通过调用 CanvasRenderingContext2D
的 createLinearGradient
或 createRadialGradient
方法来创建 CanvasGradient
。创建渐变后,您可以通过调用方法 addColorStop(offset, color)
向其添加色标。
在您的代码中,您将 CanvasRenderingContext2D
存储在 c.context.mines
中,因此您可以按照以下方式执行操作:
function render() {
c.context.minutes.clearRect(0, 0, 200, 200);
c.context.minutes.beginPath();
const gradient = c.context.minutes.createLinearGradient(0,0, 200,200);
gradient.addColorStop(0, 'red');
gradient.addColorStop(.5, 'blue');
gradient.addColorStop(1, 'green');
c.context.minutes.strokeStyle = gradient;
c.context.minutes.arc(100, 100, 90, deg(0), deg(6 * (c.times.minutes - 60)));
c.context.minutes.lineWidth = 12;
c.context.minutes.lineCap = "round";
c.context.minutes.stroke();
}
引用文献:https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient
关于javascript - 如何在 javascript 中向 borderStyle Canvas 添加渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61122649/
我是一名优秀的程序员,十分优秀!