html5 canvas绘制爱心的方法示例


本文摘自PHP中文网,作者黄舟,侵删。

第一种方法


代码实现的一种方法

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

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>使用桃心形方程绘制爱心</title>

</head>

<body>

    <canvas></canvas>

    <script>

        var canvas = document.querySelector('canvas');

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

        canvas.width = window.innerWidth;

        canvas.height = window.innerHeight;

        var Heart = function(x, y) {

            this.x = x;

            this.y = y;

            this.vertices = [];

            for(let i=0; i<30; i++) {

                var step = i / 30 * (Math.PI * 2);//设置心上面两点之间的角度,具体分成多少份,好像需要去试。

                var vector = {

                    x : (15 * Math.pow(Math.sin(step), 3)),

                    y : -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step))

                }

                this.vertices.push(vector);

            }

        }

        Heart.prototype.draw = function() {

            ctx.translate(-1000,this.y);//这一步跟ctx.shadowOffsetX必须一起使用,不明白为啥?

            ctx.beginPath();

            for(let i=0; i<30; i++) {

                var vector = this.vertices[i];

                ctx.lineTo(vector.x, vector.y);

            }

            ctx.shadowColor = "red";

            ctx.shadowOffsetX = this.x+1000;

            ctx.fill();

        }

        canvas.onmousedown = function(e) {

            var x = e.offsetX;

            var y = e.offsetY;

            var heart = new Heart(x, y);

            heart.draw();

        }

    </script>

</body>

</html>

以上就是html5 canvas绘制爱心的方法示例的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

html5 progress进度条详解

js html5 canvas绘制图片的方法

html5 canvas基本绘图之绘制矩形的示例代码详解

h5移动端各种各样的列表的制作方法(一)

使用html5/css3五步快速制作便签贴特效代码示例分享(图文)

浅谈h5的data-*中容易被忽略的一个小问题

html5前景怎么样

html5联合canvas实现图片压缩

在h5页面中怎样调用app

如何使用html5的page visibility api来实现获取焦点js事件

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




打赏

取消

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

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

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

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

评论

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

    正在狠努力加载,请稍候...