html5图片径向渐变怎么做,HTML5 canvas怎么绘制动态径向渐变

HTML5 canvas怎么绘制动态径向渐变

发布时间:2020-07-09 13:35:28

来源:亿速云

阅读:117

作者:Leah

HTML5 canvas怎么绘制动态径向渐变?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

如果要使用HTML Canvas实现径向渐变,我们需要使用createRadialGradient()方法。下面我们来看具体的内容。

77bc23b90f5f58f5bffb71b992cb5e6e.png

createRadialGradient()

createRadialGradient()的参数如下。

createRadialGradient(径向渐变开始的X坐标,径向渐变开始的Y坐标,径向渐变开始的半径,径向渐变结束的X坐标,径向渐变结束的Y坐标,径向渐变结束的半径)

我们来看具体的示例

在渐变开始和渐变结束的圆心一致的情况下

代码如下

body {

background: #C0C0C0;

}

function PageLoad() {

var CanvasWidth = 1200;

var CanvasHeight = 480;

var canvas = document.getElementsByTagName('canvas')[0],

ctx = null,

grad = null,

color = 255;

if (canvas.getContext('2d')) {

ctx = canvas.getContext('2d');

ctx.clearRect(0, 0, CanvasWidth, CanvasHeight);

grad = ctx.createRadialGradient(0, 0, 64, 0, 0, 512);

grad.addColorStop(0, '#000000');

grad.addColorStop(1, '#2869fd');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

canvas.addEventListener('mousemove', function (evt) {

var width = window.innerWidth,

height = window.innerHeight,

x = event.clientX,

y = event.clientY,

grad = ctx.createRadialGradient(x, y, 64, x, y,512);

grad.addColorStop(0, '#000000');

grad.addColorStop(1, '#2869fd');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

}, false);

}

}

说明:

加载页面时,body标签的onload执行PageLoad()函数,PageLoad函数的以下代码在页面加载时执行。

canvas对象使用getElementsByTagName()函数获取对象,getContext获取画布的上下文。使用上下文clearRect()方法清除初始化。通过上下文的createRadialGradient()方法创建渐变。如果成功,渐变对象会以返回值返回。渐变的颜色由渐变对象的addColorStop方法指定。

在画布上绘图可以将渐变对象指定给上下文的fillStyle,并使用fillRect方法绘制渐变。var CanvasWidth = 1200;

var CanvasHeight = 480;

var canvas = document.getElementsByTagName('canvas')[0],

ctx = null,

grad = null,

color = 255;

if (canvas.getContext('2d')) {

ctx = canvas.getContext('2d');

ctx.clearRect(0, 0, CanvasWidth, CanvasHeight);

grad = ctx.createRadialGradient(0, 0, 64, 128, 64, 320);

grad.addColorStop(0, '#b43700');

grad.addColorStop(1, '#ffe063');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

}

}

当鼠标在画布上移动时,将执行以下代码。创建一个以鼠标坐标为中心的圆形渐变,并可以在画布上绘制它。canvas.addEventListener('mousemove', function (evt) {

var width = window.innerWidth,

height = window.innerHeight,

x = event.clientX,

y = event.clientY,

grad = ctx.createRadialGradient(x, y, 64, x, y,512);

grad.addColorStop(0, '#000000');

grad.addColorStop(1, '#2869fd');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

}, false);

运行结果

使用Web浏览器显示上述HTML文件。将显示如下所示的效果。

a0873b0cbd5898fcba59ac80e5a593cc.png

如果在蓝色画布中移动鼠标,渐变将会随着变化。

42bf6e84f75c15f93405d3c213b93e9a.png

d45d58083880b3f5ae12df60e3b66507.png

在渐变开始和渐变结束的圆心不一致的情况下

代码如下

body {

background: #C0C0C0;

}

function PageLoad() {

var CanvasWidth = 1200;

var CanvasHeight = 480;

var canvas = document.getElementsByTagName('canvas')[0],

ctx = null,

grad = null,

color = 255;

if (canvas.getContext('2d')) {

ctx = canvas.getContext('2d');

ctx.clearRect(0, 0, CanvasWidth, CanvasHeight);

grad = ctx.createRadialGradient(0, 0, 64, 128, 64, 320);

grad.addColorStop(0, '#b43700');

grad.addColorStop(1, '#ffe063');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

canvas.addEventListener('mousemove', function (evt) {

var width = window.innerWidth,

height = window.innerHeight,

x = event.clientX,

y = event.clientY,

grad = ctx.createRadialGradient(x, y, 64, x+128, y+64, 320);

grad.addColorStop(0, '#b43700');

grad.addColorStop(1, '#ffe063');

ctx.fillStyle = grad;

ctx.fillRect(0, 0, CanvasWidth, CanvasHeight);

}, false);

}

}

说明

具体思路和前面的例子一样。只是将createRadialGradir的渐变的圆心从鼠标指针的坐标向x方向+ 128,y方向+ 64,错开渐变和结束的圆的中心。

运行结果

使用Web浏览器显示上述HTML文件。将显示如下所示的效果。

20c717fc16db6a4463c60c8d45a3e971.png

如果在画布中移动鼠标,渐变将随之变化。由于渐变的开始位置和结束位置的中心点不同,因此可以确认渐变不对称。

a6a92460702d19bfa3e264cb7bdc2588.png

关于HTML5 canvas怎么绘制动态径向渐变问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5 中,可以使用 Canvas API 绘制径向渐变Canvas API 提供了 createRadialGradient() 方法来创建径向渐变对象。 createRadialGradient() 方法的语法如下: ``` context.createRadialGradient(x0, y0, r0, x1, y1, r1); ``` 其中,(x0, y0) 表示渐变的起始点,r0 表示起始点的半径,(x1, y1) 表示渐变的结束点,r1 表示结束点的半径。 接下来,可以使用 addColorStop() 方法来为渐变对象添加颜色。addColorStop() 方法的语法如下: ``` gradient.addColorStop(stop, color); ``` 其中,stop 参数表示颜色的位置,范围在 0.0(起始位置)和 1.0(结束位置)之间,color 参数表示颜色值。 下面是一个绘制径向渐变的例子: ```html <canvas id="myCanvas" width="200" height="200"></canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); // 创建径向渐变对象 var gradient = ctx.createRadialGradient(100, 100, 50, 100, 100, 100); // 添加颜色 gradient.addColorStop(0, "red"); gradient.addColorStop(1, "white"); // 绘制圆形 ctx.beginPath(); ctx.arc(100, 100, 100, 0, 2 * Math.PI); ctx.fillStyle = gradient; ctx.fill(); </script> ``` 这个例子中,先创建了一个半径为 50 到 100 的径向渐变对象,起始点和结束点都在圆心位置。然后,使用 addColorStop() 方法为渐变对象添加了两个颜色。最后,使用 fillStyle 属性将渐变对象设置为圆形的填充样式,绘制了一个填充有径向渐变的圆形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值