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

May 25, 2017 pm 01:40 PM
canvas html5

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 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 of this Website
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

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1509
276
How to use radio buttons in HTML5? How to use radio buttons in HTML5? Jul 21, 2025 am 01:08 AM

The key to using radio buttons in HTML5 is to understand how they work and correctly organize the code structure. 1. The name attribute of each radio button must be the same to achieve mutually exclusive selection; 2. Use label tags to improve accessibility and click experience; 3. It is recommended to wrap each option in a div or label to enhance structural clarity and style control; 4. Set default selections through the checked attribute; 5. The value value should be concise and meaningful, which is convenient for form submission processing; 6. The style can be customized through CSS, but the function needs to be ensured to be normal. Mastering these key points can effectively avoid common problems and improve the effectiveness of use.

Is the  tag still used in HTML5? Is the tag still used in HTML5? Jul 21, 2025 am 02:47 AM

Yes, it is part of HTML5, but its use has gradually decreased and is controversial. Used to combine the main title with the subtitle so that only the highest level of titles are identified in the document outline; for example, the main title and subtitle can be wrapped in to indicate that they are only auxiliary titles rather than independent chapter titles; however, reasons why they are no longer widely used include: 1. The browser and screen readers are inconsistent support for them, 2. There are simpler alternatives such as using CSS to control styles, 3. The HTML document outline algorithm is not widely supported; despite this, it can still be considered in websites or documents with high semantic requirements; while in most cases, developers tend to use a single, manage styles through CSS and maintain clear title levels.

How to write a basic HTML5 page template? How to write a basic HTML5 page template? Jul 26, 2025 am 07:23 AM

Declare the document as HTML5 to avoid the browser from entering weird mode; 2. Define the root element and specify the language to improve accessibility and SEO; 3. It includes ensuring correct character encoding, implementing responsive design, and setting page title; 4. Place all visible content, optionally add CSS, favicon and JavaScript links; this template is complete and compatible with modern browsers, and is suitable for any new HTML file.

Understanding Server-Sent Events in HTML5 Understanding Server-Sent Events in HTML5 Jul 23, 2025 am 01:21 AM

Server-SentEvents (SSE) is a technology in HTML5 that implements server pushing data to clients in real time, and is suitable for stock market, notification systems and other scenarios. It is based on the HTTP protocol, and remains open after establishing a connection. The server can send updates at any time, supporting automatic reconnection and standard data formats. The front-end receives data by creating an EventSource object and listening to message events. The backend needs to set the correct MIME type (text/event-stream) and keep the connection open and continuously output data stream. When using it, you need to pay attention to cross-domain issues, connection timeouts, browser compatibility and intermediate layer restrictions.

Defining custom vocabularies using HTML5 Schema.org markup. Defining custom vocabularies using HTML5 Schema.org markup. Jul 31, 2025 am 10:50 AM

The Schema.org tag helps search engines understand the structured data format of web page content through semantic tags (such as item scope, item type, itemprop); it can be used to define custom vocabulary, methods include extending existing types or using additionalType to introduce new types; in actual applications, keeping the structure clear, using official attributes first, testing code validity, and ensuring that custom types are accessible; precautions include accepting partial support, avoiding spelling errors, and choosing a suitable format such as JSON-LD.

How does the HTML5 parser handle errors? How does the HTML5 parser handle errors? Aug 02, 2025 am 07:51 AM

HTML5parsershandlemalformedHTMLbyfollowingadeterministicalgorithmtoensureconsistentandrobustrendering.1.Formismatchedorunclosedtags,theparserautomaticallyclosestagsandadjustsnestingbasedoncontext,suchasclosingabeforeaandreopeningitafterward.2.Withimp

What are HTML5 data attributes? What are HTML5 data attributes? Aug 06, 2025 pm 05:39 PM

HTML5dataattributesarecustom,validHTMLattributesusedtostoreextrainformationinelementsforJavaScriptorCSS.1.Theyaredefinedasdata-*attributes,likedata-user-id="123".2.Theyallowembeddingprivate,customdatadirectlyinmarkupwithoutaffectinglayoutor

How to show controls for HTML5 video? How to show controls for HTML5 video? Jul 26, 2025 am 08:11 AM

To display the playback control of HTML5 videos, you must add the controls attribute; 1. Add the controls attribute to the tag to display the default playback, pause, volume, progress bar, full screen and other controls; 2. If you need to customize the display, you can dynamically set video.controls to true or false by JavaScript; 3. The default control style varies by browser and operating system. If you need to fully customize the interface, you need to remove controls and use JavaScript to build custom controls. Adding the controls attribute is the basic and necessary step to implement playback control.

See all articles