在頁面上創(chuàng)建canvas標(biāo)簽,然后獲取canvas這個(gè)元素,因?yàn)槭钱?D圖,所以是調(diào)用.getContext('2d')二維圖方法vartarget=document.getElementBy' />
  • <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>
    基礎(chǔ)知識(shí):
    <canvas id="demo" width="400" height="400">canvas>

    在頁面上創(chuàng)建canvas標(biāo)簽,然后獲取canvas這個(gè)元素,因?yàn)槭钱?D圖,所以是調(diào)用.getContext('2d') 二維圖方法

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

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

    部分API的介紹: 

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

    封裝:

      描繪路徑必需知道起點(diǎn)坐標(biāo)與終點(diǎn)坐標(biāo),因?yàn)榭赡苁嵌啻蚊枥L,所以就需要用到二維數(shù)組把各個(gè)坐標(biāo)保存下來,如[ [0,0],[100,50],[2,50] ],然后遍歷二維數(shù)組,多次調(diào)用lineTo方法進(jìn)行描繪。封裝函數(shù)如下:

    // 畫線     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();    }

    例子:月份成績(jī)分?jǐn)?shù)對(duì)比曲線圖

      

    完整代碼:

    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');    //參數(shù)    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'});                                }    })();    // 分?jǐn)?shù)轉(zhuǎn)化為坐標(biāo)輸出    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>

    穩(wěn)定

    產(chǎn)品高可用性高并發(fā)

    貼心

    項(xiàng)目群及時(shí)溝通

    專業(yè)

    產(chǎn)品經(jīng)理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽(yù)

    堅(jiān)持

    10年專注高端品質(zhì)開發(fā)
    • 返回頂部
    亚洲精品乱码久久久久久不卡| 日韩精品乱码AV一区二区| 久久亚洲日韩精品一区二区三区 | 国产精品午夜免费观看网站| 无码欧精品亚洲日韩一区| 国产精品漂亮美女在线观看| 久久久久亚洲精品无码网址色欲| 国产乱码精品一区二区三区中| 99热精品在线播放| 久久九九AV免费精品| 亚洲国产精品无码久久久蜜芽| 国产综合色在线精品| 丰满人妻熟妇乱又伦精品视 | 国产精品1024香蕉在线观看| 91精品国产三级在线观看| 99热这就是里面只有精品| 99久久精品国产片久人| 99久久er热在这里只有精品99| 十八18禁国产精品www| 久久亚洲精品AB无码播放| 熟女精品视频一区二区三区| 无码国产精品一区二区免费vr| 午夜精品久久久久久久久| 日本内射精品一区二区视频| 99精品视频在线在线视频观看| 99精品国产在热久久婷婷| 91精品久久国产青草| 久久久久久精品免费免费自慰| 久久成人国产精品免费软件| 精品国产AV一区二区三区| 精品一区二区视频在线观看| 国产精品久久久香蕉| 精品日产a一卡2卡三卡4卡乱| 精品国产高清自在线一区二区三区| 日韩精品高清自在线| 国产精品k频道在线看| 日韩精品无码一区二区视频 | 亚洲高清日韩精品第一区| 91精品国产麻豆国产自产在线 | 999久久久免费精品播放| 精品无码国产污污污免费网站 |