dc平台部技术分享

canvas画doraemon

2017-11-22  本文已影响25人  吸猫群众

html部分:

快去升级你的浏览器吧!

js 部分:

var ctx = document.getElementById('doraemon').getContext('2d');   //  getContext() 方法返回一个用于在画布上绘图的环境。

//  头部

ctx.beginPath(); // 起始一条路径,或重置当前路径

ctx.lineWidth = 2;

ctx.strokeStyle = '#000';

ctx.beginPath(); ctx.moveTo(82, 300);

ctx.bezierCurveTo(-31, 172, 36, 0, 200, 0);

ctx.bezierCurveTo(364, 0, 432, 172, 318, 300);

ctx.fillStyle = '#029AE3';

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.moveTo(90, 300);

ctx.bezierCurveTo(10, 177, 30, 50, 200, 60);

ctx.bezierCurveTo(370, 50, 390, 177, 310, 300);

ctx.fillStyle = '#FDFDFD';

ctx.fill();

ctx.stroke();

// 眼睛

ctx.beginPath();

ctx.moveTo(127, 50);

ctx.bezierCurveTo(127, -6, 200, -6, 200, 50);

ctx.bezierCurveTo(198, 106, 127, 106, 127, 50);

ctx.moveTo(164, 60); // 把路径移动到画布中的指定点,不创建路径。

ctx.quadraticCurveTo(177, 30, 190, 60);

ctx.fillStyle = '#FDFDFD';

ctx.fill(); ctx.stroke(); ctx.beginPath();

ctx.moveTo(200, 50);

ctx.bezierCurveTo(200, -6, 273, -6, 273, 50);

ctx.bezierCurveTo(271, 106, 200, 106, 200, 50);

ctx.moveTo(214, 60); // 把路径移动到画布中的指定点,不创建路径。

ctx.quadraticCurveTo(227, 30, 240, 60);

ctx.fillStyle = '#FDFDFD';

ctx.fill();

ctx.stroke();

// 鼻子

ctx.beginPath();

ctx.arc(200, 103, 25, 0, 2*Math.PI); // 坐标,半径,起始位置

ctx.fillStyle = '#DC1025';

ctx.fill();

ctx.moveTo(200, 129);

ctx.lineTo(200, 252);

ctx.closePath(); // closePath() 方法创建从当前点到开始点的路径。

ctx.stroke();

ctx.beginPath();

ctx.arc(195, 93, 9, 0, 2*Math.PI); // 坐标,半径,起始位置

ctx.fillStyle = '#FDFDFD'; ctx.fill();

// 胡须

ctx.beginPath();

ctx.moveTo(80, 100);

ctx.lineTo(165, 130);

ctx.closePath();

ctx.moveTo(58, 152);

ctx.lineTo(160, 156);

ctx.closePath();

ctx.moveTo(62, 196);

ctx.lineTo(165, 182);

ctx.closePath();

ctx.moveTo(233, 130);

ctx.lineTo(320, 100);

ctx.closePath();

ctx.moveTo(237, 156);

ctx.lineTo(343, 152);

ctx.closePath();

ctx.moveTo(235, 182);

ctx.lineTo(340, 196);

ctx.closePath();

ctx.stroke();

// 嘴巴

ctx.beginPath();

ctx.moveTo(75, 170);

ctx.quadraticCurveTo(200, 336, 335, 170);

ctx.stroke();

// 围巾

ctx.beginPath();

ctx.moveTo(80, 311);

ctx.quadraticCurveTo(75, 302, 80, 296);

ctx.quadraticCurveTo(200, 302, 322, 296);

ctx.quadraticCurveTo(330, 302, 322, 311);

ctx.quadraticCurveTo(200, 322, 80, 311);

ctx.fillStyle = '#DC1025';

ctx.fill();

ctx.stroke();

// 铃铛

ctx.beginPath();

ctx.arc(200, 336, 33, 0, 2*Math.PI);

ctx.fillStyle = '#FEDE4A';

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.arc(200, 345, 8, 0, 2*Math.PI);

ctx.fillStyle = '#7A674D';

ctx.fill();

ctx.moveTo(200, 353);

ctx.lineTo(200, 369);

ctx.stroke();

ctx.beginPath();

ctx.moveTo(168, 330);

ctx.bezierCurveTo(140, 320, 258, 320, 233, 330);

ctx.quadraticCurveTo(200, 325, 168, 330);

ctx.fillStyle = '#FEDE4A';

ctx.fill();

ctx.stroke();

// 身体

ctx.beginPath();

ctx.moveTo(40, 375);

ctx.quadraticCurveTo(50, 335, 80, 311);

ctx.lineTo(322, 311);

ctx.quadraticCurveTo(350, 335, 360, 375);

ctx.fillStyle = '#029AE3';

ctx.fillRect(40, 375, 310, 20);

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.arc(44, 414, 41, 0, 2*Math.PI);

ctx.fillStyle = '#FDFDFD'; ctx.fill();

ctx.stroke(); ctx.beginPath();

ctx.arc(356, 414, 41, 0, 2*Math.PI);

ctx.fillStyle = '#FDFDFD';

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.moveTo(80, 340);

ctx.quadraticCurveTo(70, 400, 96, 510);

ctx.quadraticCurveTo(145, 520, 200, 515);

ctx.quadraticCurveTo(255, 520, 304, 510);

ctx.quadraticCurveTo(330, 400, 320, 340);

ctx.fillStyle = '#029AE3';

ctx.fill();

ctx.stroke();

// 袋子

ctx.beginPath();

ctx.moveTo(100, 401);

ctx.bezierCurveTo(78, 266, 320, 267, 300, 401);

ctx.bezierCurveTo(290, 510, 110, 510, 100, 401);

ctx.fillStyle = '#FDFDFD';

ctx.fill(); ctx.moveTo(116, 391);

ctx.bezierCurveTo(125, 485, 283, 485, 284, 391);

ctx.quadraticCurveTo(200, 380, 116, 391);

ctx.stroke();

// 脚

ctx.beginPath();

ctx.moveTo(96, 510);

ctx.bezierCurveTo(70, 510, 63, 519, 62, 539);

ctx.bezierCurveTo(57, 561, 163, 564, 200, 551);

ctx.bezierCurveTo(237, 564, 343, 561, 338, 539);

ctx.bezierCurveTo(337, 519, 330, 510, 304, 510);

ctx.fillStyle = '#FDFDFD';

ctx.fill();

ctx.stroke();

ctx.beginPath();

ctx.moveTo(200, 497);

ctx.lineTo(200, 551);

ctx.moveTo(190, 497);

ctx.lineTo(210, 497);

ctx.stroke();

完成哈哈哈哈

上一篇下一篇

猜你喜欢

热点阅读