亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

canvas簡易繪圖的實現(海綿寶寶篇)

2024-08-26 00:20:49
字體:
來源:轉載
供稿:網友

最近在研究canvas,簡單的用canvas繪制了一下卡通人物--海綿寶寶。

圖片如下:

canvas,繪圖

代碼如下:

<!DOCTYPE html><html> <head>  <meta charset="utf-8" />  <title>canvas海綿寶寶</title> </head> <body>  <canvas id="canvas" width="1000" height="700" style="background: #01539f;"></canvas> </body> <script>  var canvas = document.getElementById("canvas");  var ctx = canvas.getContext("2d");  with(ctx){   //袖子   //左   beginPath();   fillStyle="#fff";   strokeStyle="#000";   lineWidth=2;   bezierCurveTo(142,253,112,263,112,303)   quadraticCurveTo(120,308,150,303)   fill();   stroke();   closePath();   //右   beginPath();   fillStyle="#fff";   strokeStyle="#000";   lineWidth=2;   bezierCurveTo(445,253,477,263,477,303)   quadraticCurveTo(467,308,447,303)   fill();   stroke();   closePath();   //胳膊   //左   beginPath();   fillStyle="#f5e261";   strokeStyle="#000";   lineWidth=2;   moveTo(122,306);   lineTo(110,406);   lineTo(120,406);   lineTo(132,306);   fill();   stroke();   closePath();   //右   beginPath();   fillStyle="#f5e261";   strokeStyle="#000";   moveTo(458,306);   lineTo(470,406);   lineTo(480,406);   lineTo(468,306);   fill();   stroke();   closePath();   //手   //左   //衣服   beginPath();   fillStyle="#fff";   strokeStyle="#000";   lineWidth=5;   shadowColor = "#000";    shadowOffsetX = 0;    shadowOffsetY = 0;    shadowBlur = 0;    moveTo(145,385);   lineTo(146,425);   lineTo(442,425);   lineTo(443,385);   stroke();   fill();   closePath();   //褲子   beginPath();   fillStyle="#ae6f28";   strokeStyle="#000";   moveTo(146,427);   lineTo(147,470);   lineTo(441,470);   lineTo(442,427);   stroke();   fill();   closePath();   //褲子圖案   beginPath();   fillStyle="#000";   rect(156,438,60,15);   rect(236,438,120,15);   rect(373,438,60,15);   fill();   closePath();   //褲腿   beginPath();   fillStyle="#ae6f28";   strokeStyle="#000";   lineWidth=2;   moveTo(190,472);   lineTo(190,490);   lineTo(235,490);   lineTo(235,472);   moveTo(350,472);   lineTo(350,490);   lineTo(395,490);   lineTo(395,472);   fill();   stroke();   closePath();   //腿   beginPath();   fillStyle="#fffe71";   strokeStyle="#000";   lineWidth=2;   moveTo(208,491);   lineTo(208,516);   lineTo(218,516);   lineTo(218,491);   moveTo(368,491);   lineTo(368,516);   lineTo(378,516);   lineTo(378,491);   fill();   stroke();   closePath();   //襪子   beginPath();   fillStyle="#fff";   strokeStyle="#000";   lineWidth=2;   moveTo(208,517);   lineTo(207,560);   lineTo(218,560);   lineTo(218,517);   moveTo(368,517);   lineTo(368,560);   lineTo(379,560);   lineTo(378,517);   fill();   stroke();   closePath();   //藍杠   beginPath();   strokeStyle="#536d92";   lineWidth=4;   moveTo(208,523);   lineTo(218,523);   moveTo(368,523);   lineTo(378,523);   stroke();   closePath();   //紅杠   beginPath();   strokeStyle="#da4751";   lineWidth=4;   moveTo(209,530);   lineTo(218,530);   moveTo(369,530);   lineTo(378,530);   stroke();   closePath();      //領帶   beginPath();   strokeStyle="#000";   lineWidth=5;   fillStyle="#ef4641";   moveTo(270,385);   lineTo(320,385);   lineTo(298,413);   lineTo(292,413);   lineTo(270,385);   moveTo(292,415);   lineTo(280,446);   lineTo(295,462);   lineTo(310,446);   lineTo(298,415);   stroke();   fill();   closePath();   //領子   beginPath();   strokeStyle="#000";   fillStyle="#fff";   moveTo(280,393);   lineTo(265,410);   lineTo(218,385);   moveTo(310,393);   lineTo(325,410);   lineTo(362,385);   stroke();   fill();   closePath();   //臉   beginPath();   strokeStyle="#818620";   fillStyle="#f5e262";   lineWidth=5;   bezierCurveTo(140,50,150,60,160,50);   quadraticCurveTo(170,40,180,50);   quadraticCurveTo(190,60,200,50);   quadraticCurveTo(210,40,220,50);   quadraticCurveTo(230,60,240,50);   quadraticCurveTo(250,40,260,50);   quadraticCurveTo(270,60,280,50);   quadraticCurveTo(290,40,300,50);   quadraticCurveTo(310,60,320,50);   quadraticCurveTo(330,40,340,50);   quadraticCurveTo(350,60,360,50);   quadraticCurveTo(370,40,380,50);   quadraticCurveTo(390,60,400,50);   quadraticCurveTo(410,40,420,50);   quadraticCurveTo(430,60,440,50);   quadraticCurveTo(450,40,460,50);   quadraticCurveTo(465,60,460,70);   quadraticCurveTo(450,80,460,90);   quadraticCurveTo(468,100,458,110);   quadraticCurveTo(446,120,456,130);   quadraticCurveTo(466,140,456,150);   quadraticCurveTo(444,160,454,170);   quadraticCurveTo(464,180,454,190);   quadraticCurveTo(442,200,452,210);   quadraticCurveTo(462,220,452,230);   quadraticCurveTo(440,240,450,250);   quadraticCurveTo(460,260,450,270);   quadraticCurveTo(438,280,448,290);   quadraticCurveTo(458,300,448,310);   quadraticCurveTo(436,320,446,330);   quadraticCurveTo(456,340,446,350);   quadraticCurveTo(434,360,444,370);   quadraticCurveTo(454,380,444,390);   quadraticCurveTo(435,405,424,390);   quadraticCurveTo(415,380,405,390);   quadraticCurveTo(395,400,385,390);   quadraticCurveTo(375,380,365,390);   quadraticCurveTo(355,400,345,390);   quadraticCurveTo(335,380,325,390);   quadraticCurveTo(315,400,305,390);   quadraticCurveTo(295,380,285,390);   quadraticCurveTo(275,400,265,390);   quadraticCurveTo(255,380,245,390);   quadraticCurveTo(235,400,225,390);   quadraticCurveTo(215,380,205,390);   quadraticCurveTo(195,400,185,390);   quadraticCurveTo(175,380,165,390);   quadraticCurveTo(155,400,145,390);   quadraticCurveTo(135,380,145,370);   quadraticCurveTo(153,360,143,350);   quadraticCurveTo(133,340,143,330);   quadraticCurveTo(151,320,141,310);   quadraticCurveTo(131,300,141,290);   quadraticCurveTo(149,280,139,270);   quadraticCurveTo(129,260,139,250);   quadraticCurveTo(147,240,137,230);   quadraticCurveTo(127,220,137,210);   quadraticCurveTo(145,200,135,190);   quadraticCurveTo(125,180,135,170);   quadraticCurveTo(143,160,133,150);   quadraticCurveTo(123,140,133,130);   quadraticCurveTo(141,120,131,110);   quadraticCurveTo(121,100,131,90);   quadraticCurveTo(139,80,129,70);   quadraticCurveTo(119,60,129,50);   quadraticCurveTo(137,45,140,50);   stroke();   fill();   closePath();   //眼睛   beginPath();   strokeStyle="#000";   fillStyle="#fff";   arc(249,180,45,0,Math.PI*2,true);   arc(341,180,45,0,Math.PI*2,true);   stroke();   fill();   closePath();   //眼仁   beginPath();   strokeStyle="#000";   fillStyle="#50d1f1";   arc(255,180,18,0,Math.PI*2,true);   stroke();   fill();   closePath();   beginPath();   strokeStyle="#000";   fillStyle="#50d1f1";   arc(335,180,18,0,Math.PI*2,true);   stroke();   fill();   closePath();   //眼球   beginPath();   strokeStyle="#000";   fillStyle="#000";   arc(255,180,10,0,Math.PI*2,true);   stroke();   fill();   closePath();   beginPath();   strokeStyle="#000";   fillStyle="#000";   arc(335,180,10,0,Math.PI*2,true);   stroke();   fill();   closePath();   //眼睫毛   beginPath();   lineWidth=6;   strokeStyle="#000";   moveTo(210,122);   lineTo(223,142);   moveTo(247,112);   lineTo(247,133);   moveTo(283,117);   lineTo(270,140);   moveTo(307,120);   lineTo(320,140);   moveTo(344,112);   lineTo(344,133);   moveTo(380,120);   lineTo(365,140);   stroke();   closePath();   //嘴角   beginPath();   fillStyle="#fdd06b"   lineWidth=3;   strokeStyle="#ca5939";   moveTo(190,230);   bezierCurveTo(160,175,265,190,230,230);   stroke();   fill();   closePath();   beginPath();   fillStyle="#fdd06b"   lineWidth=3;   strokeStyle="#ca5939";   moveTo(350,230);   bezierCurveTo(325,175,435,190,395,230);   stroke();   fill();   closePath();   //牙   beginPath();   strokeStyle="#000";   lineWidth=2;   fillStyle="#fff";   moveTo(275,272);   lineTo(275,292);   lineTo(295,292);   lineTo(295,272);   moveTo(300,272);   lineTo(300,292);   lineTo(320,292);   lineTo(320,271);   //rect(297,252,20,20);   fill();   stroke();   closePath();   //嘴   beginPath();   strokeStyle="#000";   lineWidth=3;   bezierCurveTo(210,220,290,340,380,220);   stroke();   closePath();   beginPath();   strokeStyle="#000";   lineWidth=2;   bezierCurveTo(205,225,205,215,220,220);   stroke();   closePath();   beginPath();   strokeStyle="#000";   lineWidth=2;   bezierCurveTo(370,220,380,215,385,225);   stroke();   closePath();   //鼻子   beginPath();   strokeStyle="#000";   lineWidth=3;   fillStyle="#f5e262";   moveTo(290,215);   bezierCurveTo(265,170,340,185,300,225);   stroke();   fill();   closePath();   //下巴   beginPath();   strokeStyle="#cb662e";   lineWidth=2;   bezierCurveTo(250,305,270,330,290,310);   quadraticCurveTo(300,305,310,310);   quadraticCurveTo(330,330,350,305);   shadowColor = "#cb662e";    shadowOffsetX = 0;    shadowOffsetY = -3;    shadowBlur = 10;    stroke();   closePath();   //雀斑   beginPath();   fillStyle="#bf7627";   arc(197,205,2,0,Math.PI*2,true);   fill();   closePath();   beginPath();   fillStyle="#bf7627";   arc(210,214,2,0,Math.PI*2,true);   fill();   closePath();   beginPath();   fillStyle="#bf7627";   arc(218,207,2,0,Math.PI*2,true);   fill();   closePath();   beginPath();   fillStyle="#bf7627";   arc(367,205,2,0,Math.PI*2,true);   fill();   closePath();   beginPath();   fillStyle="#bf7627";   arc(390,206,2,0,Math.PI*2,true);   fill();   closePath();   beginPath();   fillStyle="#bf7627";   arc(380,213,2,0,Math.PI*2,true);   fill();   closePath();   //皮鞋   //左   beginPath();   strokeStyle="#000";   fillStyle="#000";   lineWidth=4;   shadowColor = "#000";    shadowOffsetX = 0;    shadowOffsetY = 0;    shadowBlur = 0;    arc(180,577,11,0,Math.PI*2,true);   bezierCurveTo(185,560,197,575,207,560);   moveTo(207,560);   lineTo(217,560);   quadraticCurveTo(227,570,217,585);   quadraticCurveTo(197,580,180,585);   quadraticCurveTo(207,561,185,570);   rect(207,585,10,4)   stroke();   fill();   //ctx.rotate( m * Math.PI / 180)   closePath();   //右   beginPath();   strokeStyle="#000";   fillStyle="#000";   lineWidth=4;   shadowColor = "#000";    shadowOffsetX = 0;    shadowOffsetY = 0;    shadowBlur = 0;    arc(405,577,11,0,Math.PI*2,true);   bezierCurveTo(400,560,388,575,378,560);   moveTo(378,560);   lineTo(368,560);   quadraticCurveTo(358,570,368,585);   quadraticCurveTo(388,580,405,585);   quadraticCurveTo(422,561,400,570);   rect(368,585,10,4)   stroke();   fill();   //ctx.rotate( m * Math.PI / 180)   closePath();   //白點   beginPath();   strokeStyle="#f5e262";   fillStyle="#c4b127";   fill();   EvenCompEllipse(ctx, 160, 100, 10, 15);   EvenCompEllipse(ctx, 150, 150, 5, 7);   EvenCompEllipse(ctx, 200, 320, 7, 10)   EvenCompEllipse(ctx, 225, 350, 11, 16)   EvenCompEllipse(ctx, 425, 120, 11, 16)   EvenCompEllipse(ctx, 410, 320, 9, 12)   EvenCompEllipse(ctx, 380, 340, 6, 9)   closePath();  }  function EvenCompEllipse(ctx, x, y, a, b)  {     ctx.save();     //選擇a、b中的較大者作為arc方法的半徑參數     var r = (a > b) ? a : b;      var ratioX = a / r; //橫軸縮放比率     var ratioY = b / r; //縱軸縮放比率     ctx.scale(ratioX, ratioY); //進行縮放(均勻壓縮)     ctx.beginPath();     //從橢圓的左端點開始逆時針繪制     ctx.moveTo((x + a) / ratioX, y / ratioY);     ctx.arc(x / ratioX, y / ratioY, r, 0, 2 * Math.PI);     ctx.closePath();     ctx.stroke();     ctx.fill();     ctx.restore();  };    </script></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人a成www在线影院| 日本视频久久久| 国产精品视频色| 久久精品国产91精品亚洲| 久久亚洲电影天堂| 欧美性猛交99久久久久99按摩| 亚洲丝袜av一区| 欧美影院在线播放| 国产精品日韩专区| 欧美日韩亚洲成人| 国产精品久久久久久久app| 人人做人人澡人人爽欧美| 亚洲国产日韩欧美在线99| 欧美中文字幕在线观看| 久久精品国产久精国产一老狼| 日韩乱码在线视频| 九九热视频这里只有精品| 国产精品成av人在线视午夜片| 亚洲精品wwwww| 一区二区亚洲精品国产| 亚洲日本中文字幕免费在线不卡| 国产精品美腿一区在线看| 精品视频在线观看日韩| 国产在线98福利播放视频| 欧美日韩一区二区在线播放| 亚洲一区中文字幕| 欧美激情小视频| 伦伦影院午夜日韩欧美限制| 欧美国产乱视频| 美女少妇精品视频| 成人www视频在线观看| 另类视频在线观看| 久久久女女女女999久久| 久久久精品亚洲| 亚洲精品一区久久久久久| 国产91ⅴ在线精品免费观看| 国产精品成人一区二区三区吃奶| 亚洲视频一区二区三区| 亚洲激情久久久| 色婷婷久久一区二区| 日韩激情av在线播放| 色yeye香蕉凹凸一区二区av| 伊人男人综合视频网| 亚洲黄色免费三级| 精品毛片网大全| 欧美一级免费视频| 正在播放欧美视频| 一本色道久久88亚洲综合88| 国产精品中文字幕在线观看| 欧美黑人巨大xxx极品| 国内免费久久久久久久久久久| 成人情趣片在线观看免费| 成人av番号网| 久久这里有精品视频| 国产精品一区二区三区免费视频| 中文字幕久久精品| 国产精品日韩一区| 中文字幕9999| www.欧美精品| 69影院欧美专区视频| 欧美中文在线免费| 日本成人免费在线| 中文字幕日韩欧美在线视频| 精品亚洲一区二区三区| 成人激情在线播放| 国产亚洲日本欧美韩国| 欧美一级片久久久久久久| 亚洲精品国产福利| 欧美视频不卡中文| 欧美高清一级大片| 91精品国产自产在线观看永久| 成人激情视频小说免费下载| 欧美亚洲日本黄色| 欧美伦理91i| 欧美亚洲国产日韩2020| 最近的2019中文字幕免费一页| 国产91精品久久久久久| 欧美剧在线观看| 国产狼人综合免费视频| 久久视频国产精品免费视频在线| 国产xxx69麻豆国语对白| 久久91亚洲人成电影网站| 久久久久北条麻妃免费看| 久久久av电影| 日韩视频免费中文字幕| y97精品国产97久久久久久| 日韩在线视频免费观看| 深夜福利国产精品| 在线播放国产一区中文字幕剧情欧美| 精品国产91久久久久久老师| 亚洲黄页视频免费观看| 国产精品美女免费| 欧美美女18p| 亚洲人成伊人成综合网久久久| 亚洲国产精品久久久久秋霞蜜臀| 久久精品国产96久久久香蕉| 狠狠躁夜夜躁人人爽超碰91| 国产精品jvid在线观看蜜臀| 欧美日韩国产一区二区| 日韩精品视频三区| 亚洲视频在线看| 亚洲精品视频二区| 亚洲最新av在线| 欧美日韩亚洲一区二区| 亚洲天堂成人在线视频| 国产精品第10页| 狠狠久久五月精品中文字幕| 亚洲电影在线看| 色悠久久久久综合先锋影音下载| 欧美野外wwwxxx| 91精品在线影院| 国产午夜精品一区理论片飘花| 久久久久久com| 欧美性理论片在线观看片免费| 日韩综合中文字幕| 日韩av在线网页| 国内揄拍国内精品少妇国语| 欧美极品在线视频| 国产精品美女无圣光视频| 精品久久久久久电影| 国产欧美婷婷中文| 成人日韩在线电影| 中文字幕亚洲在线| 美女福利视频一区| 在线中文字幕日韩| 国产精品黄页免费高清在线观看| 亚洲欧美一区二区精品久久久| 一区二区三区视频免费在线观看| 欧美日韩在线另类| 亚洲国产精品小视频| 久久久噜噜噜久噜久久| 91理论片午午论夜理片久久| 国产91精品在线播放| 亚洲一区美女视频在线观看免费| 尤物yw午夜国产精品视频明星| 亚洲日韩中文字幕| 成人美女av在线直播| 91日本在线视频| 国模视频一区二区三区| 97精品国产97久久久久久春色| 5566成人精品视频免费| 亚洲图中文字幕| 午夜精品久久久久久久男人的天堂| 青青a在线精品免费观看| 国产成人精品一区二区| 国产性色av一区二区| 欧美性xxxxhd| 成人春色激情网| 久久久久久久久久久久av| 久久成人一区二区| 国产精品91在线观看| 日韩精品久久久久久福利| 91在线国产电影| www.亚洲一区| 欧美刺激性大交免费视频| 国内精品久久久久久| 亚洲欧美一区二区精品久久久| 欧洲一区二区视频| 亚洲天堂av高清| 欧美视频在线看| 国产精品丝袜视频| 欧美在线视频观看免费网站| 国产精品自拍网| 欧美高跟鞋交xxxxhd|