HTML5 canvas如何绘制动态径向渐变


本文摘自PHP中文网,作者不言,侵删。

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

HTML5 canvas

createRadialGradient()

createRadialGradient()的参数如下。

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

我们来看具体的示例

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

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<!DOCTYPE html>

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  <meta charset="utf-8" />

  <style>

    body {

      background: #C0C0C0;

    

</style>

  <script>

    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);

      }

    

</script>

</head>

<body onload="PageLoad();">

  <canvas width="1200" height="480"></canvas>

</body>

</html>

说明:

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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);

      }

    }

当鼠标在画布上移动时,将执行以下代码。创建一个以鼠标坐标为中心的圆形渐变,并可以在画布上绘制它。

1

2

3

4

5

6

7

8

9

10

11

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);

运行结果

阅读剩余部分

相关阅读 >>

HTML5 meter标签是什么意思?HTML5 meter度量衡如何改变颜色详解

html中的video无法播放怎么办

HTML5 canvas 图形组合是如何实现的?附代码

HTML5 canvas如何绘制圆形?(代码实例)

HTML5应用-生日快乐动画的实现

字符编码是什么?HTML5如何设置字符编码?

HTML5怎么实现图片转圈的动画效果

HTML5 figure和figcaption的使用方法

canvas实现九宫格心形拼图的方法(附代码)

HTML5实现把上传的图片转成base64编码在显示(代码实例)

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...