zoukankan      html  css  js  c++  java
  • canvas画太阳系八大行星

    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>太阳系八大行星</title>
    </head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body{
             100%;
            height: 100%;
            
            background: url(./btg.jpg)no-repeat;
            background-size: 100% 100%;
        }
    </style>

    <body>
        <canvas width="1920" height="1080"  id="canvas">
            您的浏览器不支持canvas
        </canvas>
        <script>
            //获取画布
            var canvas = document.getElementById('canvas');
            //获取绘图环境
            var cxt = canvas.getContext('2d');
            //d单位时间time (1:1天)
            var time = 0;
            // 水 金 地 火 木 土 天 海
            function draw() {
                //清除画布
                cxt.clearRect(0, 0, 1920, 1080);
                //画水星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 200, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画金星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 230, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画地球轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 260, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画火星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 290, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画木星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 350, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画土星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 440, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画天王星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 520, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画海王星轨道
                cxt.strokeStyle = "#FFF";
                cxt.beginPath();
                //路径函数
                cxt.arc(960, 500, 570, 0, 360, false);
                cxt.closePath();
                cxt.stroke();

                //画小星星
                function xiaoxx() {
                    
                    cxt.beginPath();
                    cxt.arc(960, 200, 1, 0, 360, false);
                    cxt.closePath();
                    var sunColor = cxt.createRadialGradient(960, 200, 0, 960, 200, 180);
                    sunColor.addColorStop(0, "#fff");
                    sunColor.addColorStop(1, "#fff");
                    cxt.fillStyle = sunColor;
                    cxt.fill();


                }
                xiaoxx()


                //画太阳
                cxt.beginPath();
                //路径函数 x,y,r,角度范围,顺时针/逆时针
                cxt.arc(960, 500, 180, 0, 360, false);
                cxt.closePath();
                //填充(渐变色)
                //cxt.createLinearGradient(内圆心x,内圆心y,内半径r,外圆心x,外圆心y,外圆半径r);
                var sunColor = cxt.createRadialGradient(960, 500, 0, 960, 500, 180);
                sunColor.addColorStop(0, "#F00");
                sunColor.addColorStop(1, "#F90");
                cxt.fillStyle = sunColor;
                cxt.fill();

                //画水星
                cxt.save();
                //异次元空间00点
                cxt.translate(960, 500);
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(200, 0, 8, 0, 360, false);
                var earthColor = cxt.createRadialGradient(180, 0, 0, 180, 0, 10);
                cxt.strokeStyle = "#050c12";
                earthColor.addColorStop(0, "#0097e2"); //#&8B1Eb
                earthColor.addColorStop(1, "#007dbc"); //#050c12
                cxt.fillStyle = earthColor;
                cxt.fill();
                cxt.closePath();

                // //画金星
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(230, 0, 10, 0, 360, false);
                var moonColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#e7e700";
                moonColor.addColorStop(0, "#ffff00");
                moonColor.addColorStop(1, "#e7e700");
                cxt.fillStyle = moonColor;
                cxt.fill();

                // //画地球
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(260, 0, 15, 0, 360, false);
                var earthColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#55aaff";
                earthColor.addColorStop(0, "#55aaff");
                earthColor.addColorStop(1, "#80b1ff");
                cxt.fillStyle = earthColor;
                cxt.fill();

                // //画火星
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(290, 0, 5, 0, 360, false);
                var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#3E2715";
                marsColor.addColorStop(0, "#915634");
                marsColor.addColorStop(1, "#673B22");
                cxt.fillStyle = marsColor;
                cxt.fill();

                // //画木星
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(350, 0, 40, 0, 360, false);
                var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#84703c";
                marsColor.addColorStop(0, "#84703c");
                marsColor.addColorStop(1, "#ba9d54");
                cxt.fillStyle = marsColor;
                cxt.fill();

                // //画土星
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(440, 0, 35, 0, 360, false);
                var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#dcaf85";
                marsColor.addColorStop(0, "#F1C385");
                marsColor.addColorStop(1, "#C8A07D");
                cxt.fillStyle = marsColor;
                cxt.fill();

                // 天王星
                cxt.rotate(time * 365 / 360 * Math.PI / 960);
                cxt.beginPath();
                cxt.arc(520, 0, 20, 0, 360, false);
                var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#6083D4";
                marsColor.addColorStop(0, "#4C64A4");
                marsColor.addColorStop(1, "#415E9A");
                cxt.fillStyle = marsColor;
                cxt.fill();

                // 海王星
                cxt.rotate(time * 365 / 1000 * Math.PI / 1200);
                cxt.beginPath();
                cxt.arc(570, 0, 22, 0, 360, false);
                var marsColor = cxt.createRadialGradient(30, 0, 0, 30, 0, 5);
                cxt.strokeStyle = "#6881C0";
                marsColor.addColorStop(0, "#6C8BC8");
                marsColor.addColorStop(1, "#414A6D");
                cxt.fillStyle = marsColor;
                cxt.fill();



                cxt.closePath();
                cxt.restore();
                cxt.restore();


                //每画一次图像,时间参数加1
                time += 1;
            }
            draw();
            //通过修改第二个参数课调整速度
            setInterval(draw, 50);
        </script>
    </body>

    </html>
  • 相关阅读:
    Android Stuido 更新问题
    ListView 获取精确滚动值
    获取ActionBar高度
    AnyncTaskLoader写法
    ScrollView 里面捕获OnTouchMove事件
    ImageLoader displayers 之CircleBitmapDisplayer
    DownloadManager 下载Apk 打开时 解析应用包是出错
    GSON 使用记录
    Android studio 不能升级问题
    一个社交App是如何构建高伸缩性的交互式系统
  • 原文地址:https://www.cnblogs.com/MrQinjj/p/13706903.html
Copyright © 2011-2022 走看看