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绘制爱心的方法示例的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

h5实现多图片预览上传及点击可拖拽控件

html5是h5吗

h5 canvas中fill 与stroke文字效果实现实例

html5 实现如何将两个矩形相互叠加

html5 video怎么停止播放视频

http协议发展过程一览

html5 video标签的属性、方法和事件汇总介绍

怎样实现h5微信播放全屏

html5实现移动页面自适应手机屏幕的方法

h5做出手机摇一摇功能的实现步骤

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




打赏

取消

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

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

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

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

评论

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