Home >Web Front-end >H5 Tutorial >Example of how to draw hearts on html5 canvas

Example of how to draw hearts on html5 canvas

黄舟
黄舟Original
2017-10-31 10:35:086188browse

The first method

Example of how to draw hearts on html5 canvas
A method of code implementation

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用桃心形方程绘制爱心</title>
</head>
<body>
    <canvas></canvas>
    <script>
        var canvas = document.querySelector(&#39;canvas&#39;);
        var ctx = canvas.getContext(&#39;2d&#39;);
        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>

The above is the detailed content of Example of how to draw hearts on html5 canvas. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn