Home >Web Front-end >H5 Tutorial >An example of how to draw the five-star red flag with h5Canvas

An example of how to draw the five-star red flag with h5Canvas

零下一度
零下一度Original
2017-05-25 13:40:363286browse

This article mainly introduces you to the code related to drawing the five-star red flag in HTML5 Canvas. The Canvas tag is used to define graphics and is a graphics container. How to draw the five-star red flag. The following editor will share the implementation code with you

The Canvas drawing API is not defined on the 5ba626b379994d53f7acf72a64f9b697 element itself, but is defined on a "drawing environment" object obtained through the canvas's getContext() method.

The Canvas API also uses path representation. However, a path is defined by a series of method calls, such as calls to the beginPath() and arc() methods, rather than being described as a string of letters and numbers.

Once the path is defined, other methods, such as fill(), operate on this path. Various properties of the drawing environment, such as fillStyle, describe how these operations are used.

Use Canvas to draw the Chinese flag, code:

XML/HTML CodeCopy the content to the clipboard

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="UTF-8">
        <title>中国标准国旗</title>
    </head>
    <body>
        <canvas id="canvas" width="600" height="400"></canvas>
        <script type="text/javascript">
            // 使用HTML5绘制标准五星红旗   
            var canvas = document.getElementById("canvas");   
            var context = canvas.getContext(&#39;2d&#39;);   
            var width = canvas.width;   
            var height = width * 2 / 3;   
            var w = width / 30;//小网格的宽   
            context.fillStyle = "red";   
            context.fillRect(0, 0, width, height);   
            var maxR = 0.15, minR = 0.05;//   
            var maxX = 0.25, maxY = 0.25;//大五星的位置   
            var minX = [0.50, 0.60, 0.60, 0.50];   
            var minY = [0.10, 0.20, 0.35, 0.45];   
            // 画大 ☆   
            var ox = height * maxX, oy = height * maxY;   
            create5star(context, ox, oy, height * maxR, "#ff0", 0);//绘制五角星   
            // 画小 ★   
            for (var idx = 0; idx < 4; idx++) {   
                var sx = minX[idx] * height, sy = minY[idx] * height;   
                var theta = Math.atan((oy - sy) / (ox - sx));   
                create5star(context, sx, sy, height * minR, "#ff0", -Math.PI / 2 + theta);   
            }   
            //辅助线   
            context.moveTo(0, height / 2)   
            context.lineTo(width, height / 2);   
            context.stroke();   
            context.moveTo(width / 2, 0);   
            context.lineTo(width / 2, height);   
            context.stroke();   
            //画网格,竖线   
            for (var j = 0; j < 15; j++) {   
                context.moveTo(j * w, 0);   
                context.lineTo(j * w, height / 2);   
                context.stroke();   
            }   
            //画网格,横线   
            for (var j = 0; j < 10; j++) {   
                context.moveTo(0, j * w);   
                context.lineTo(width / 2, j * w);   
                context.stroke();   
            }   
            //画大圆   
            context.beginPath();   
            context.arc(ox, oy, maxR * height, 0, Math.PI * 2, false);   
            context.closePath();   
            context.stroke();   
            // 画小圆   
            for (var idx = 0; idx < 4; idx++) {   
                context.beginPath();   
                var sx = minX[idx] * height, sy = minY[idx] * height;   
                context.arc(sx, sy, height * minR, 0, Math.PI * 2, false);   
                context.closePath();   
                context.stroke();   
            }   
            //大圆中心与小圆中心连接线   
            for (var idx = 0; idx < 4; idx++) {   
                context.moveTo(ox, oy);   
                var sx = minX[idx] * height, sy = minY[idx] * height;   
                context.lineTo(sx, sy);   
                context.stroke();   
            }   
            //绘制五角星   
            /**   
             * 创建一个五角星形状. 该五角星的中心坐标为(sx,sy),中心到顶点的距离为radius,rotate=0时一个顶点在对称轴上   
             * rotate:绕对称轴旋转rotate弧度   
             */   
            function create5star(context, sx, sy, radius, color, rotato){   
                context.save();   
                context.fillStyle = color;   
                context.translate(sx, sy);//移动坐标原点   
                context.rotate(Math.PI + rotato);//旋转   
                context.beginPath();//创建路径   
                var x = Math.sin(0);   
                var y = Math.cos(0);   
                var dig = Math.PI / 5 * 4;   
                for (var i = 0; i < 5; i++) {//画五角星的五条边   
                    var x = Math.sin(i * dig);   
                    var y = Math.cos(i * dig);   
                    context.lineTo(x * radius, y * radius);   
                }   
                context.closePath();   
                context.stroke();   
                context.fill();   
                context.restore();   
            }   
        </script>
    </body>
</html>

【Related recommendations】

1. Free h5 online video tutorial

2. Roses effect drawn by HTML5 canvas_html5 tutorial skills

3. HTML5 Canvas: Draw gradient color

The above is the detailed content of An example of how to draw the five-star red flag with h5Canvas. 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