zoukankan      html  css  js  c++  java
  • canvas 绘制星座图(好玩)--转载

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title>canvas星座</title>
    <style>
    * {
    margin: 0;
    padding: 0;
    }
    #box{
    margin:10px 0 0 10px;;
    }
    input{
    outline: none;
    font-size:16px;
    }
    p{
    margin-bottom: 10px
    }
    input[type=date]{
    height:36px;
    text-indent:10px;
    }
    input[type=button]{
    background:#3A92FF;
    color:white;
    border: none;
    height:40px;
    padding:0 10px;
    margin-left: -2px;
    }
    #canvas{
    margin-left:10px;
    background-color: #000;
    display: none;
    }
    </style>
    </head>
    <body>
    <div id="box">
    <p>请选择您的出生日期</p>
    <input type="date" id="birth"><input type="button" id="btn" value="展示我的星空图">
    </div>
     <canvas id="canvas" width="550" height="550">你的浏览器不支持canvas</canvas>
    <script type="text/javascript">
    var box=document.getElementById('box');
    var birth=document.getElementById('birth');
    var btn=document.getElementById('btn');
    var canvas=document.getElementById("canvas");
    var ctx=canvas.getContext("2d");
    var g1,date,timer;
    ctx.font = "30px Courier New";
    /*星座位置*/
    var star={
    "白羊座":[
    [[0.30,0.78],[0.34,0.66],[0.28,0.48],[0.60,0.26],[0.65,0.20],[0.71,0.23],[0.70,0.32],[0.72,0.36]],
    [ [0,1,2,3,4,5],[3,6,7]]
    ],
    "天秤座":[
    [[0.16,0.67],[0.34,0.60],[0.60,0.27],[0.75,0.23],[0.84,0.47],[0.63,0.74],[0.51,0.78]],
    [[0,1,2,3,4,5,6]]
    ],
    "摩羯座":[
    [[0.78,0.21],[0.78,0.34],[0.75,0.45],[0.75,0.70],[0.69,0.78],[0.31,0.66],[0.22,0.49],[0.30,0.53],[0.53,0.54]],
    [[0,1,2,3,4,5,6,7,8,1]]
    ],
    "水瓶座":[
    [[0.45,0.21],[0.37,0.35],[0.27,0.51],[0.30,0.58],[0.29,0.64],[0.48,0.79],[0.51,0.71],[0.58,0.68],[0.73,0.74],[0.43,0.53],[0.53,0.47]],
    [[0,1,2,3,4,5,6,7,8],[2,9,10]]
    ],
    "双鱼座":[
    [[0.28,0.43],[0.28,0.53],[0.36,0.73],[0.43,0.78],[0.50,0.70],[0.53,0.62],[0.57,0.58],[0.63,0.43],[0.67,0.39],[0.74,0.39],[0.77,0.34],[0.72,0.30],[0.75,0.22],[0.23,0.50],[0.66,0.33]],
    [[0,1,2,3,4,5,6,7,8,9,10,11,12],[0,13,1],[8,14,11]]
    ],
    "金牛座":[
    [[0.29,0.21],[0.39,0.36],[0.50,0.51],[0.50,0.57],[0.61,0.63],[0.77,0.71],[0.79,0.79],[0.22,0.43],[0.39,0.57],[0.60,0.71],[0.67,0.76]],
    [[0,1,2,3,4,5,6],[7,8,3],[4,9,10]]
    ],
    "双子座":[
    [[0.18,0.37],[0.25,0.45],[0.35,0.55],[0.39,0.68],[0.49,0.77],[0.51,0.63],[0.57,0.78],[0.28,0.29],[0.42,0.32],[0.61,0.49],[0.72,0.60],[0.83,0.59],[0.69,0.75],[0.22,0.54],[0.35,0.43],[0.48,0.21]],
    [[0,1,2,3,4],[2,5,6],[7,8,9,10,11],[9,12],[13,1,14,8,15]]
    ],
    "巨蟹座":[
    [ [0.16,0.39],[0.27,0.36],[0.52,0.49],[0.57,0.65],[0.83,0.78],[0.44,0.21]],
    [[0,1,2,3,4],[2,5]]
    ],
    "狮子座":[
    [
    [0.16,0.75],[0.23,0.67],[0.39,0.77],[0.71,0.53],[0.64,0.39],[0.55,0.37],[0.47,0.27],[0.54,0.24],[0.60,0.27],[0.85,0.56]],
    [[0,1,2,3,4,5,6,7,8],[3,9]]
    ],
    "处女座":[
    [[0.16,0.59],[0.35,0.63],[0.44,0.70],[0.62,0.51],[0.77,0.46],[0.84,0.37],[0.60,0.42],[0.65,0.26],[0.34,0.75]],
    [[0,1,2,3,4,5],[3,6,7],[2,8]]
    ],
    "天蝎座":[
    [[0.17,0.50],[0.28,0.63],[0.19,0.70],[0.28,0.78],[0.41,0.77],[0.49,0.72],[0.57,0.55],[0.59,0.44],[0.69,0.31],[0.74,0.21],[0.82,0.29],[0.79,0.44],[0.73,0.50],[0.38,0.47]],
    [[0,1,2,3,4,5,6,7,8,9,10,11,12],[1,13],[8,11]]
    ],
    "射手座":[
    [[0.22, 0.66],[0.24,0.51],[0.45,0.40],[0.54,0.37],[0.59,0.43],[0.66,0.50],[0.63,0.60],[0.66,0.67],[0.74,0.53],[0.77,0.39],[0.49,0.47],[0.29,0.68],[0.30,0.78],[0.48,0.21],[0.52,0.27],[0.59,0.29]],
    [[0,1,2,3,4,5,6,7,8,9],[2,10,11,12],[10,4],[13,14,15,3],[14,3]]
    ]
    };
    /*根据出生日期获取星座信息*/
    function getStarSign(ts){
    var d=new Date(ts),sign=d.getMonth()*100+d.getDate();
    switch(true)
    {
    case sign<20:
    return "摩羯座";
    case sign<119:
    return "水瓶座";
    case sign<221:
    return "双鱼座";
    case sign<320:
    return "白羊座";
    case sign<421:
    return "金牛座";
    case sign<522:
    return "双子座";
    case sign<623:
    return "巨蟹座";
    case sign<723:
    return "狮子座";
    case sign<823:
    return "处女座";
    case sign<923:
    return "天秤座";
    case sign<1022:
    return "天蝎座";
    case sign<1122:
    return "射手座";
    default:
    return "摩羯座";
    }
    }
    /*绘制星座*/
    function constellation(ctx,ary,w,h){
    /*创建线条*/
    var points=ary[0], lines=ary[1];
    ctx.strokeStyle="#FFF";
    var len=lines.length,i,ii,line,point;
    ctx.beginPath();
    while(len--)
    {
    i=1;
    line=lines[len];
    ii=line.length;
    point=points[line[0]];
    ctx.moveTo(point[0]*w,point[1]*h);
    for(;i<ii;i++){
    point=points[line[i]];
    ctx.lineTo(point[0]*w,point[1]*h);
    }
    }
    ctx.stroke();
    /*创建小圆*/
    var cur;
    i=0;
    ii=points.length;
    for(;i<ii;i++){
    cur=points[i];
    new Circle(cur[0]*w,cur[1]*h).draw();//new出实例
    }

    }
    /*创建小圆的构造函数*/
    function Circle(x,y,r){
    this.x=x;
    this.y=y;
    this.r=r||Math.round(Math.random()*8+4);
    }
    Circle.prototype={
    draw:function(){
    ctx.beginPath();
    g1=ctx.createRadialGradient(this.x,this.y,Math.round(Math.random()*1+1),this.x,this.y,Math.round(Math.random()*3+6));
    g1.addColorStop(0,'rgba(255,255,255,.9)');
    g1.addColorStop(1,'rgba(0,0,0,.1)');
    ctx.arc(this.x,this.y,this.r,0,Math.PI*2,true);
    ctx.fillStyle =g1;
    ctx.closePath();
    ctx.fill();
    return this;
    }};
    /*点击‘展示我的星空图’按钮*/
    btn.onclick=function(e){
    clearInterval(timer);
    e.preventDefault();
    if (!birth.value){
    alert("请选择您的出生日期");
    }else{
    canvas.style.display="block";
    date = new Date(birth.value.replace(/-/g,'/')).getTime();
    timer=setInterval(function(){
    ctx.clearRect(0,0,canvas.width,canvas.height);
    ctx.strokeText(getStarSign(date), 50, 50);
    constellation(ctx,star[getStarSign(date)],canvas.width,canvas.height);
    },500);
    }
    };
    </script>
    </body>
    </html>

  • 相关阅读:
    案例(2)-- 线程不安全对象(SimpleDateFormat)
    案例(1)-- OOM异常
    jvm--工具
    死锁的产生以及定位死锁
    TCP--粘包拆包,netty的解决方式
    netty--处理器
    AtomicIntegerFieldUpdater和AtomicInteger
    NIO--ByteBuf
    Pipeline
    吴恩达机器学习笔记(四) —— BP神经网络
  • 原文地址:https://www.cnblogs.com/luckyuns/p/6410293.html
Copyright © 2011-2022 走看看