zoukankan      html  css  js  c++  java
  • html5 canvas画五角星(美国队长)

    画一波五角星: 美国队长图标

    原理:  (1)根据五角星的顶点,外顶点5个,内顶点5个,分成内外圆

                 (2)由三角函数可表示出每个顶点的位置

                  (3)利用canvas的lineTo()接口画图

    上代码:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <title>Captain America</title>
     7     <style type="text/css">
     8     #canvas {
     9         display: block;
    10         margin: 50px auto;
    11     }
    12     </style>
    13 </head>
    14 
    15 <body>
    16     <canvas id="canvas"></canvas>
    17     <script>
    18     window.onload = function() {
    19         var canvas = document.getElementById("canvas");
    20         canvas.width = 800;
    21         canvas.height = 600;
    22 
    23         var context = canvas.getContext("2d");
    24         // 四个圆
    25         drawArc(context, 300, 300, 120, 0, Math.PI * 2, false, "#dd5870");
    26         drawArc(context, 300, 300, 100, 0, Math.PI * 2, false, "#e0dedf");
    27         drawArc(context, 300, 300, 80, 0, Math.PI * 2, false, "#dd5870");
    28         drawArc(context, 300, 300, 60, 0, Math.PI * 2, false, "#2773d3");
    29         drawStar(context, 20, 60, 300, 300, 0, "#dedce1"); // 五角星  
    30     }
    31 
    32     function drawStar(ctx, r, R, x, y, changeDeg, fillColor) {
    33         //绘制星星的路径,changeDeg:表示五角星旋转的角度
    34         ctx.beginPath(); //开始路径  
    35         for (var i = 0; i < 5; i++) {
    36             ctx.lineTo(Math.cos((18 + i * 72 - changeDeg) / 180 * Math.PI) * R + x, -Math.sin((18 + i * 72 - changeDeg) / 180 * Math.PI) * R + y);
    37             ctx.lineTo(Math.cos((54 + i * 72 - changeDeg) / 180 * Math.PI) * r + x, -Math.sin((54 + i * 72 - changeDeg) / 180 * Math.PI) * r + y);
    38         }
    39         ctx.closePath() //结束路径  
    40         ctx.fillStyle = fillColor;
    41         ctx.fill();
    42     }
    43 
    44     function drawArc(ctx, x, y, r, stratAngel, endAngel, flag, fillColor) {
    45         ctx.beginPath();
    46         ctx.arc(x, y, r, stratAngel, endAngel, flag);
    47         ctx.fillStyle = fillColor;
    48         ctx.fill();
    49         ctx.closePath();
    50     }
    51     </script>
    52 </body>
    53 </html>

    结果:

    清风徐来,水波不兴
  • 相关阅读:
    mysql数据库给别人访问权限
    linux 5-sort,uniq,tar,split
    linux 4 -awk
    Linux 3 -grep
    linux 基础2-null,cut,wc,head,tail
    linux 基础-变量,shell基本语法
    [ActionScript 3.0] 利用InteractivePNG.as类精确选择识别png图片有像素的区域
    [ActionScript 3.0] 嵌入字体
    [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片
    [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据
  • 原文地址:https://www.cnblogs.com/it-xiaojun/p/6095554.html
Copyright © 2011-2022 走看看