回答
是的,这是可能的! Javascript中有一个方法,名为createLinearGradient
,它获取作为canvas上下文的源并应用由sx
,sy
,dx
,dy
坐标定义的梯度。前两个选项定义起始坐标,最后两个选项定义结束坐标。
var gradient = context.createLinearGradient(sx, sy, dx, dy);
调用此方法后,你可以通过调用colorStop
方法应用于渐变颜色,你的画布:
gradient.addColorStop(0, '#f00'); // red
gradient.addColorStop(0.5, '#ff0'); // yellow
gradient.addColorStop(1, '#00f'); // blue
这些是在画布上实施梯度基本成分。然后,如果需要圆形渐变,下一步将计算圆形颜色渐变位置。这可以通过以下公式满足:
var applyAngle = function (point, angle, distance) {
return {
x : point.x + (Math.cos(angle) * distance),
y : point.y + (Math.sin(angle) * distance)
};
};
然后插件所得x
和y
位置进入createLinearGradient方法,该方法会产生一个很好看的圆形梯度。当然,您需要使用arc
方法使其成为循环。
什么是 '距离' 参数表示applyAngle功能? – Masterakos
代表半径 –
优秀的答案:@SimoEndre你能发表一个实际的例子:你会如何绘制弧线? – taseenb
在这里,你去。
var canvas = document.getElementById('circle');
var ctx = canvas.getContext('2d');
var x = 250,
y = 250,
radius = 200,
// 0deg - 1.5 * Pi,
// 90deg - 0 * Pi,
// 180deg - 0.5 * Pi,
// 270deg - 1 * Pi
angleStart = 1.5 * Math.PI,
angleEnd = 0.7 * Math.PI;
//Create gradient
var gradient = ctx.createLinearGradient(0,500,0, 0);
gradient.addColorStop(0, '#000');
gradient.addColorStop(1, '#40d6a5');
//Draw circle
ctx.beginPath();
ctx.arc(x, x, radius, 0, 2*Math.PI, false);
ctx.lineWidth = 30;
ctx.strokeStyle = 'rgba(255,255,255, 0.2)'
ctx.stroke();
//Draw arc
ctx.beginPath();
ctx.arc(x, y, radius, angleStart, angleEnd);
ctx.strokeStyle = gradient;
ctx.lineWidth = 30;
ctx.lineCap = 'round';
ctx.stroke();
不是我的代码,我在下面的链接中找到它。
http://codepen.io/alsheuski/pen/eJNwNX
或者这一个
- 1. 绘制渐变色在弧圆边
- 2. 在Quartz中绘制线性渐变并将其变成圆形
- 3. 绘制渐变圆
- 4. 在HTML5 Canvas上绘制拉伸弧
- 5. 绘制弧线cocos2d-html5
- 6. 制作渐变弧线?
- 7. R:制作分数计/渐变圆弧
- 8. 绘制一条弧线并将其渐变
- 9. 绘制椭圆渐变
- 10. 如何绘制沿弧的渐变
- 11. 画布绘制用线性渐变填充圆角矩形
- 12. 在OpenGL中用线性渐变纹理绘制圆柱
- 13. 弧线,KineticJS绘制
- 14. html5 canvas将线条更改为圆形
- 15. Android线性渐变可绘制
- 16. Android - 如何绘制基于渐变的弧线
- 17. Android:使用渐变填充颜色绘制弧线
- 18. 绘制透明圆弧
- 19. 在three.js中绘制圆弧
- 20. 圆弧正在绘制矩形
- 21. 用LibGDX绘制渐变线
- 22. 安卓绘制的圆弧与清扫弧线
- 23. 用Core Graphics绘制圆弧时绘制的额外线条
- 24. 绘制渐变
- 25. wx python绘制圆弧和圆
- 26. 在Android中绘制圆锥渐变
- 27. 如何绘制圆形渐变?
- 28. 在GDI中用线性渐变绘制线条渐变的折线+
- 29. Three.Js在webgl中绘制线性渐变纹理
- 30. Paint:如何使用渐变图像或位图图像绘制圆弧
[你尝试过什么?](http://www.whathaveyoutried.com/) – Cerbrus