在頁面上創建canvas標簽,然后獲取canvas這個元素,因為是畫2D圖,所以是調用.getContext('2d')二維圖方法vartarget=document.getElementBy' />

亚洲乱码卡一卡二卡三永久-亚洲乱码一二三四区-亚洲乱码一区二区三区在线观看-亚洲伦理一区-成人在色线视频在线观看免费大全-成人在线91

基礎知識:
<canvas id="demo" width="400" height="400">canvas>

在頁面上創建canvas標簽,然后獲取canvas這個元素,因為是畫2D圖,所以是調用.getContext('2d') 二維圖方法

var target = document.getElementById('demo'),     pic = target.getContext('2d');

canvas作圖的平面空間,該空間的每個點都有自己的坐標,x表示橫坐標,y表示豎坐標。原點(0, 0)位于圖像左上角,x軸的正向是原點向右,y軸的正向是原點向下。

部分API的介紹: 

  pic.beginPath(); //創建開始描繪路徑(每一條線都需要重新創建一次,否則以后的操作【如填充顏色】都會反映在此路徑)    pic.moveTo(0, 0); //描繪的起點    pic.lineTo(100,100); // 設置描繪線的終點,可以調用多次(以上次的終點為起點,繼續描繪)    pic.lineTo(240,340);    pic.lineWidth = 1; //設置寬度    pic.strokeStyle = '#259'; //設置顏色    pic.stroke(); //填充    pic.closePath(); //關閉此路徑,可選

封裝:

  描繪路徑必需知道起點坐標與終點坐標,因為可能是多次描繪,所以就需要用到二維數組把各個坐標保存下來,如[ [0,0],[100,50],[2,50] ],然后遍歷二維數組,多次調用lineTo方法進行描繪。封裝函數如下:

// 畫線     function drawContLine(opt){        pic.beginPath();        var path = opt.path,//[[0,0],[20,30]......]            color = opt.color;        pic.moveTo(path[0][0],path[0][1]);        var n = 1,            len = path.length;        for(;n){            pic.lineTo(path[n][0],path[n][1]);        }        pic.lineWidth = 1;        pic.strokeStyle = color;        pic.stroke();        pic.closePath();    }

例子:月份成績分數對比曲線圖

  

完整代碼:

DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"/>    <title>Documenttitle>    <style type="text/css">    .ui-fill{border:1px solid #666;border-top:none;border-right:none;width:400px;height:400px;margin:50px auto;position:relative;}    .scroe span{position:absolute;left:-40px;}    .a10{top:-10px;}.a9{top:30px;}.a8{top:70px;}.a7{top:110px;}.a6{top:150px;}    .a5{top:190px;}.a4{top:230px;}.a3{top:270px;}.a2{top:310px;}.a1{top:350px;}    .year span{position:absolute;top:410px;white-space:nowrap;color:#700404;}    .y1{left:70px;}.y2{left:150px;}.y3{left:230px;}.y4{left:310px;}.y5{left:390px;}    style>head><body>    <div class="ui-fill">        <canvas id="demo" width="400" height="400">canvas>        <div class="scroe">            <span class="a1">10span>            <span class="a2">20span>            <span class="a3">30span>            <span class="a4">40span>            <span class="a5">50span>            <span class="a6">60span>            <span class="a7">70span>            <span class="a8">80span>            <span class="a9">90span>            <span class="a10">100span>        div>        <div class="year">            <span class="y1">1月span>            <span class="y2">2月span>            <span class="y3">3月span>            <span class="y4">4月span>            <span class="y5">5月span>        div>    div>    <script type="text/javascript">    var target = document.getElementById('demo');    var pic = target.getContext('2d');    //參數    var sum = 400,        ratio = 400/100;    // 畫線     function drawContLine(opt){        pic.beginPath();        var path = opt.path,//[[0,0],[20,30]......]            color = opt.color;        pic.moveTo(path[0][0],path[0][1]);        var n = 1,            len = path.length;        for(;n<len;n++){            pic.lineTo(path[n][0],path[n][1]);        }        pic.lineWidth = 1;        pic.strokeStyle = color;        pic.stroke();        pic.closePath();    }    // 刻度線    (function(){        var scale = 20,            i = sum/scale,            n = 0;        for(;n<i;n++){            drawContLine({'path':[[scale*n*4,0],[scale*n*4,sum]],'color':'#f4f4f4'});            drawContLine({'path':[[0,scale*n],[sum,scale*n]],'color':'#f4f4f4'});                                }    })();    // 分數轉化為坐標輸出    function transforCoor(opt){        var scroes = opt.scroes,            scale = 20*4,            n = 0,            len = scroes.length,            a_path = [];        for(;n<len;n++){            var x = sum - scroes[n]*ratio;            var arry = [scale*(n+1),x];            //console.log(arry);            a_path.push(arry);        }        drawContLine({'path':a_path,'color':opt.color});    }    transforCoor({'scroes':[90,80,98,70,60],'color':'#259'});    transforCoor({'scroes':[88,86,85,84,85],'color':'#f60'});    script>body>html>

穩定

產品高可用性高并發

貼心

項目群及時溝通

專業

產品經理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽

堅持

10年專注高端品質開發
  • 返回頂部
主站蜘蛛池模板: avav在线看 | 二级男女做受片一级d2 | 视频网站入口在线看 | 国产免费麻豆 | 亚洲免费国产 | 国产高清视频青青青在线 | 天天摸夜夜摸爽爽狠狠婷婷97 | 久久久精品成人免费看 | 丁香综合五月 | 99黄色网 | 鸥美性生交xxxxx久久久 | 亚洲一区欧美日韩 | 一级做a爱片性色毛片武则天五则 | 女性一级全黄生活片免费看 | 欧美在线播放成人a | 欧美影视一区 | 欧美激情伊人 | 丁香六月综合网 | 一级做a爱过程免费视频时看 | 黄色片www| 亚洲午夜剧场 | 国产无遮挡又爽又色又刺激 | 亚洲成人高清在线观看 | 欧美日视频 | 欧美在线视频第一页 | 日本视频免费高清一本18 | 亚洲精品午夜久久aaa级久久久 | 国产精品.com | 毛片www| 91日韩欧美| 成人区在线观看免费视频 | 一级毛片一级毛片免费毛片 | 国产草草视频 | 国产丫丫视频私人影院 | 波多野结衣一区二区三区在线观看 | 国产精品毛片一区二区三区 | 日本欧美一级二级三级不卡 | 男女猛烈无遮挡性视频 | 人人爱人人插 | 久久国产成人午夜aⅴ影院 久久国产欧美日韩精品 | 又www又黄又爽啪啪网站 |