zoukankan      html  css  js  c++  java
  • 旋转的太极图

    1.创建一个画布,获取canvas节点

     

    <canvas id="c" width="500" height="500"></canvas>//创建canvas节点
            <script type="text/javascript">
                var canvas = document.getElementById('c');
                var c = canvas.getContext('2d');//获取canvas对象
           <script>

     

    然后先设置定时器,在定时器中先位移canvas的起点,canvas的起点默认在画布的左上角(0,0)

     

    setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
                    c.save();//保存状态
                    
                    c.translate(250,250);//位移canvas的起点到画布的中心
                    
                    taiji();//然后调用taiji函数以起点在画布的中心画图
                    
                    c.restore()//恢复状态
                    
                },100);

    设置之后的起点在画图的中心

    然后开始在以(250,250)为起点的画布画静态的太极

    function taiji(){
                    // 绘制黑色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小白色半圆
                    c.beginPath();
                    c.arc(0,100,100,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小黑色半圆
                    c.beginPath();
                    c.arc(0,-100,100,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制黑色小圆
                    c.beginPath();
                    c.arc(0,100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色小圆
                    c.beginPath();
                    c.arc(0,-100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                }

    最后开始调用旋转

    // 太极旋转
                var i= 0;
                setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
                    c.save();//保存状态
                    c.translate(250,250);
                    // 旋转
                    c.rotate(Math.PI/180*i);
                    i+=5;
                    // taiji();
                    c.restore()//恢复状态
                    
                },100);
    image-20201111200313660

     

    最后附上完整的代码:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                #c {
                    background-color: #ccc;
                }
            </style>
        </head>
        <body>
            <canvas id="c" width="500" height="500"></canvas>
            <script type="text/javascript">
                var canvas = document.getElementById('c');
                var c = canvas.getContext('2d');
                function taiji(){
                    // 绘制黑色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小白色半圆
                    c.beginPath();
                    c.arc(0,100,100,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小黑色半圆
                    c.beginPath();
                    c.arc(0,-100,100,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制黑色小圆
                    c.beginPath();
                    c.arc(0,100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色小圆
                    c.beginPath();
                    c.arc(0,-100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                }
                
                
                // 太极旋转
                var i= 0;
                setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
    c.save();//保存状态
    c.translate(250,250);
    // 旋转
    c.rotate(Math.PI/180*i);
    i+=5;
    // taiji();
    c.restore()//恢复状态
    
        },100);
    
    
    
    </script>
    </body>
    </html>

     

  • 相关阅读:
    asp.net log4net
    SQLServer客户端连接工具(支持2000,20005,2008)
    html中的table导出Excel
    贝叶斯网(2)Netica:从数据中学习CPT
    贝叶斯网(1)尝试用Netica搭建简单的贝叶斯网并使用贝叶斯公式解释各个bar的结果
    IIPP迷你项目(四)"Pong"
    Coursera课程《Machine Learning》学习笔记(week2)
    IIPP迷你项目(二)"Guess the Number!"
    Coursera课程《Machine Learning》学习笔记(week1)
    IIPP迷你项目(三)“Stopwatch: The Game”
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/13960675.html
Copyright © 2011-2022 走看看