AI 助理
备案 控制台
开发者社区 开发与运维 文章 正文

教你如何用Canvas绘制整身的哆啦A梦

简介: 教你如何用Canvas绘制整身的哆啦A梦 上牌你文章我们说到了如何使用canvas绘制哆啦A梦,但当时只是绘制了哆啦A梦的头部,之后有学员留言说可不可以教大家绘制整身的哆啦A梦,想了想,决定安排一下。如图: 在这里插入图片描述 HTML代码: <canvas id="my_canvas"></canvas> <canvas id="my_canvas2"></canvas> 1 2 CSS代码: * { margin: 0; } #my_canvas {

教你如何用Canvas绘制整身的哆啦A梦




上牌你文章我们说到了如何使用canvas绘制哆啦A梦,但当时只是绘制了哆啦A梦的头部,之后有学员留言说可不可以教大家绘制整身的哆啦A梦,想了想,决定安排一下。如图:


在这里插入图片描述

image.png

HTML代码:



<canvasid="my_canvas"></canvas><canvasid="my_canvas2"></canvas>

CSS代码:


 

* {
margin: 0;
        }
#my_canvas {
/* display: block;            margin: 0 auto; */background: pink;
        }
#my_canvas2 {
background: skyblue;
        }

JS代码:


varoCanvas=document.getElementById("my_canvas");
oCanvas.width=680;
oCanvas.height=840;
varcontext=oCanvas.getContext("2d");
// 1.大脑袋context.beginPath();
context.arc(340, 260, 230, Math.PI/3, Math.PI/3*2, true);
context.lineWidth="8";
context.closePath();
context.stroke();
context.fillStyle="rgb(34,118,207)";
context.fill();
// 2.大脸蛋子// context.ellipse(x,y,r1,r2,旋转的角度,起始角度,结束角度)context.beginPath();
context.lineWidth="8";
context.ellipse(340, 310, 200, 180, 0, Math.PI/4, Math.PI/4*3, true);
context.stroke();
context.fillStyle="white";
context.fill();
// 3.大嘴巴子context.beginPath();
context.lineWidth="5";
context.moveTo(340, 245);
context.lineTo(340, 405);
context.stroke();
context.fillStyle="black";
context.fill();
context.beginPath();
context.ellipse(340, 215, 200, 190, 0, Math.PI/4, Math.PI/4*3, );
context.stroke();
// 4.大眼珠子// 左眼context.beginPath();
context.lineWidth="8";
context.ellipse(288, 160, 50, 60, 0, 0, Math.PI*2);
context.stroke();
context.fillStyle="white";
context.fill();
context.beginPath();
context.arc(295, 190, 20, 0, -Math.PI, true);
context.stroke();
// 右眼context.beginPath();
context.ellipse(392, 160, 50, 60, 0, 0, Math.PI*2);
context.stroke();
context.fillStyle="white";
context.fill();
context.beginPath();
context.arc(385, 190, 20, 0, -Math.PI, true);
context.stroke();
// 5.大鼻子context.beginPath();
context.lineWidth="8";
context.arc(340, 235, 30, 0, 2*Math.PI);
context.stroke();
context.fillStyle="red";
context.fill();
// 6.画胡子context.lineWidth="5";
huzi(165, 224, 270, 265);
huzi(153, 280, 262, 280);
huzi(165, 320, 262, 300);
huzi(416, 265, 515, 224);
huzi(425, 280, 530, 280);
huzi(425, 300, 522, 320);
// 画胡子 函数functionhuzi(x1, y1, x2, y2) {
context.beginPath();
context.moveTo(x1, y1);
context.lineTo(x2, y2);
context.stroke();
    }
// 胳膊// 左臂context.save();
context.beginPath();
context.moveTo(190, 439);
context.lineTo(80, 504);
context.lineTo(110, 562);
context.lineTo(180, 531);
context.lineTo(180, 500);
context.lineTo(180, 760);
context.lineTo(320, 760);
// 裆context.arcTo(320, 750, 340, 720, 20);
context.arcTo(360, 720, 360, 750, 20);
context.lineTo(360, 760);
context.lineTo(500, 760);
context.lineTo(500, 500);
context.lineTo(500, 531);
context.lineTo(570, 562);
context.lineTo(600, 504);
context.lineTo(490, 439);
context.stroke();
context.closePath();
context.fillStyle="rgb(12,162,231)";
context.fill();
context.stroke();
// 左拳context.beginPath();
context.lineWidth="8";
context.arc(70, 545, 45, 0, Math.PI*2);
context.stroke();
context.fillStyle="white";
context.fill();
// 右拳context.beginPath();
context.lineWidth="8";
context.arc(610, 545, 45, 0, Math.PI*2);
context.stroke();
context.fillStyle="white";
context.fill();
// 脚// 左脚context.save();
context.beginPath();
context.lineWidth="8";
context.moveTo(180, 760);
context.lineTo(315, 760);
context.arc(315, 780, 20, -Math.PI/2, Math.PI/2);
context.lineTo(180, 800);
context.arc(180, 780, 20, -Math.PI/2, Math.PI/2, true);
context.fillStyle="white";
context.lineCap="round";
context.stroke();
context.fill();
context.restore();
// 右脚context.save();
context.beginPath();
context.lineWidth="8";
context.moveTo(500, 760);
context.lineTo(365, 760);
context.arc(365, 780, 20, -Math.PI/2, Math.PI/2, true);
context.lineTo(500, 800);
context.arc(500, 780, 20, -Math.PI/2, Math.PI/2);
context.fillStyle="white";
context.lineCap="round";
context.stroke();
context.fill();
context.restore();
// 肚子context.beginPath();
context.lineWidth="8";
context.arc(340, 550, 130, -Math.PI/4, -Math.PI/4*3);
context.closePath();
context.stroke();
context.fillStyle="white";
context.fill();
context.beginPath();
context.arc(340, 550, 100, 0, -Math.PI);
context.closePath();
context.stroke();
context.fillStyle="white";
context.fill();
// 领带context.save();
context.beginPath();
context.lineWidth="8";
context.moveTo(190, 430);
context.lineTo(490, 430);
context.arc(490, 450, 20, -Math.PI/2, Math.PI/2);
context.lineTo(190, 470);
context.arc(190, 450, 20, -Math.PI/2, Math.PI/2, true);
context.fillStyle="red";
context.lineCap="round";
context.stroke();
context.fill();
context.restore();
// 铃铛context.beginPath();
context.arc(340, 470, 30, 0, Math.PI*2);
context.stroke();
context.fillStyle="yellow";
context.fill();
context.beginPath();
context.lineWidth="5";
context.moveTo(312, 455);
context.lineTo(368, 455);
context.stroke();
context.beginPath();
context.moveTo(310, 462);
context.lineTo(370, 462);
context.stroke();
context.beginPath();
context.arc(340, 475, 5, 0, Math.PI*2);
context.stroke();
context.fillStyle="black";
context.fill();
context.beginPath();
context.moveTo(340, 480);
context.lineTo(340, 500);
context.stroke();
varoCanvas2=document.getElementById("my_canvas2");
oCanvas2.width=680;
oCanvas2.height=840;
varcontext2=oCanvas2.getContext("2d");
// 1.头context2.beginPath();
context2.lineWidth="8";
context2.arc(340, 260, 230, Math.PI/3, Math.PI/3*2, true);
context2.closePath();
context2.stroke();
context2.fillStyle="yellow";
context2.fill();
// 2.脸   画椭圆context2.beginPath();
context2.ellipse(340, 310, 200, 180, 0, Math.PI/4, Math.PI/4*3, true);
context2.closePath();
context2.stroke();
context2.fillStyle="white";
context2.fill();
// 3.眼睛// 左眼context2.beginPath();
context2.ellipse(288,160,50,60,0,0,Math.PI*2);
context2.stroke();
context2.fillStyle="white";
context2.fill();
context2.beginPath();
context2.arc(295,190,20,0,Math.PI,true);
context2.stroke();
// 右眼context2.beginPath();
context2.ellipse(392,160,50,60,0,0,Math.PI*2);
context2.stroke();
context2.fillStyle="white";
context2.fill();
context2.beginPath();
context2.arc(385,190,20,0,Math.PI,true);
context2.stroke();
// 4.鼻子context2.beginPath();
context2.arc(340,235,30,0,Math.PI*2);
context2.stroke();
context2.fillStyle="red";
context2.fill();
// 5.嘴巴context2.beginPath();
context2.lineWidth="5";
context2.moveTo(340,265);
context2.lineTo(340,405);
context2.stroke();
context2.beginPath();
context2.ellipse(340,215,200,190,0,Math.PI/4,Math.PI/4*3);
context2.stroke();
// 6.胡子context2.lineWidth="5";
huzi2(165, 224, 270, 265);
huzi2(153, 280, 262, 280);
huzi2(165, 320, 262, 300);
huzi2(416, 265, 515, 224);
huzi2(425, 280, 530, 280);
huzi2(425, 300, 522, 320);
// 画胡子 函数functionhuzi2(x1, y1, x2, y2) {
context2.beginPath();
context2.moveTo(x1, y1);
context2.lineTo(x2, y2);
context2.stroke();
    }
// 7.身体部分// 左臂context2.beginPath();
context2.moveTo(190,439);
context2.lineTo(80,504);
context2.lineTo(110,562);
context2.lineTo(180,531);
context2.lineTo(180, 500);
context2.lineTo(180, 760);
context2.lineTo(320, 760);
// 裆context2.arcTo(320,750,360,720,20);
context2.arcTo(360,720,360,750,20);
context2.lineTo(360, 760);
context2.lineTo(500, 760);
context2.lineTo(500, 500);
context2.lineTo(500, 531);
context2.lineTo(570, 562);
context2.lineTo(600, 504);
context2.lineTo(490, 439);
context2.closePath();
context2.fillStyle="yellow";
context2.fill();
context2.stroke();
// 7.左手context2.beginPath();
context2.arc(70,545,45,0,Math.PI*2);
context2.fillStyle="white";
context2.fill();
context2.stroke();
// 右手context2.beginPath();
context2.arc(610,545,45,0,Math.PI*2);
context2.fillStyle="white";
context2.fill();
context2.stroke();
// 8.左脚context2.save();
context2.beginPath();
context2.lineWidth="8";
context2.moveTo(180,760);
context2.lineTo(315,760);
context2.arc(315,780,20,-Math.PI/2,Math.PI/2);
context2.lineTo(180,800);
context2.arc(180,780,20,-Math.PI/2,Math.PI/2,true);
context2.stroke();
context2.fillStyle="white";
context2.fill();
context2.restore();
// 右脚context2.save();
context2.beginPath();
context2.lineWidth="8";
context2.moveTo(500,760);
context2.lineTo(365,760);
context2.arc(365,780,20,-Math.PI/2,Math.PI/2,true);
context2.lineTo(500,800);
context2.arc(500,780,20,-Math.PI/2,Math.PI/2);
context2.stroke();
context2.fillStyle="white";
context2.fill();
context2.restore();
// 10.肚子context2.beginPath();
context2.arc(340,550,130,-Math.PI/4,-Math.PI/4*3);
context2.closePath();
context2.fillStyle="white";
context2.fill();
context2.stroke();
// 口袋context2.beginPath();
context2.arc(340,550,100,0,Math.PI);
context2.closePath();
context2.fillStyle="white";
context2.fill();
context2.stroke();
// 11.领带context2.save();
context2.beginPath();
context2.lineWidth="8";
context2.moveTo(190,430);
context2.lineTo(490,430);
context2.arc(490,450,20,-Math.PI/2,Math.PI/2);
context2.lineTo(190,470);
context2.arc(190,450,20,-Math.PI/2,Math.PI/2,true);
context2.stroke();  
context2.fillStyle="red";
context2.fill();
context2.restore();
// 12.铃铛context2.beginPath();
context2.arc(340,470,30,0,Math.PI*2);
context2.fillStyle="skyblue";
context2.fill();
context2.stroke();
context2.lineWidth="5";
huzi2(312, 455,368, 455);
huzi2(310, 462,370, 462)
huzi2(340, 480,340, 500)
context2.beginPath();
context2.arc(340, 475, 5, 0, Math.PI*2);
context2.fillStyle="black";
context2.fill();
context2.stroke();


总结: 绘制整身的哆啦A梦主要涉及到了对画圆方法的使用,需要控制好角度才能绘制出来头部和口袋。同时还要注意绘制脚丫时是如何让拼接的路径。


视频讲解链接:
https://www.bilibili.com/video/BV1454y1Q7Aq/

1387809421166477
目录
相关文章
baker_zhuang
|
7天前
Pixi入门第二章:绘制各种图形
这篇文章是Pixi.js入门系列的第二章,重点在于如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的代码示例。
baker_zhuang
17 0
Pixi入门第二章:绘制各种图形
baker_zhuang
|
7天前
|
JavaScript API 图形学
ThreeJS入门-创建一个正方体
这篇文章介绍了如何使用Three.js创建一个基本的正方体模型,并提供了实现这一功能的详细步骤和代码示例。
baker_zhuang
10 0
ThreeJS入门-创建一个正方体
朝阳39
|
3月前
|
前端开发 JavaScript
canvas系列教程06 ——边界检测、碰撞检测
canvas系列教程06 ——边界检测、碰撞检测
朝阳39
37 2
爱你三千遍斯塔克
|
3月前
|
前端开发
Canvas绘画之倒三角形,渐变色效果源码
Canvas绘画之倒三角形,渐变色效果源码
爱你三千遍斯塔克
33 0
极客小俊
|
前端开发 开发者
520要通过这种方式告白 html+css+javascript canvas爱心代码
html+css+javascript canvas爱心代码
极客小俊
113 0
520要通过这种方式告白 html+css+javascript canvas爱心代码
beloved000
|
Java 图形学
JavaSwing矩形绘制教程
JavaSwing矩形绘制教程 矩形是计算机图形学中最基本的图形,JavaSwing也提供了绘制矩形的功能。本教程将介绍如何使用JavaSwing绘制矩形。
beloved000
190 0
LeoATLiang
|
API 计算机视觉
【OpenCV图像处理3】绘制基本图形
【OpenCV图像处理3】绘制基本图形
LeoATLiang
98 0
哥很冷漠
|
前端开发
canvas画布实现代码雨
canvas画布实现代码雨
哥很冷漠
91 0
greework
|
移动开发 前端开发 JavaScript
利用Canvas进行网上绘图
利用Canvas进行网上绘图
greework
194 0
1387809421166477
|
前端开发 JavaScript
教你如何利用canvas画布绘制哆啦A梦
订阅专栏 教你如何利用canvas画布绘制哆啦A梦 最近一直在练习使用canvas画布标签,今天教大家如何使用canvas画布绘制哆啦A梦。如图: HTML代码: <canvas id="my_canvas"></canvas> 1 CSS代码: canvas { display:block; margin:0 auto; background: pink } 1 2 3 4 5 JavaScript代码: var oCanvas = document.getEleme
1387809421166477
135 0
教你如何利用canvas画布绘制哆啦A梦

热门文章

最新文章

  • 1
    表格存储新手指南:如何实现分页查询
  • 2
    高效运维之Docker持续部署图文详解
  • 3
    ODPS技术架构及应用实践
  • 4
    TensorFlow中的那些高级API
  • 5
    安装Zabbix过程中出现的问题集
  • 6
    当后端一次性丢给你10万条数据, 作为前端工程师的你,要怎么处理?
  • 7
    15分钟的效率法则
  • 8
    使用SSH密钥方式登录Linux
  • 9
    NVMdurance公司将闪存寿命延长至十倍
  • 10
    phpwind的rewrite重写原理
  • 1
    Java后端基础自测
    35
  • 2
    Synchronized是怎么实现的?
    32
  • 3
    AQS为什么采用双向链表
    27
  • 4
    Java基础扫盲(二)
    29
  • 5
    Java基础知识扫盲
    31
  • 6
    面试官问我了解Mybatis吗?我说了解,然后...........
    17
  • 7
    HashMap五大核心问题总结
    10
  • 8
    Spring底层架构源码解析(三)
    15
  • 9
    Spring底层架构源码解析(二)
    12
  • 10
    Spring底层原理大致脉络
    13
  • 相关电子书

    更多
  • 骨骼动画实践
  • 低代码开发师(初级)实战教程
  • 阿里巴巴DevOps 最佳实践手册
  • 下一篇
    阿里云无影AI云电脑亮相 体验大幅升级

    玻璃钢生产厂家青海道教玻璃钢雕塑天门玻璃钢雕塑造型贴金合肥创意玻璃钢雕塑哪家便宜仿铜玻璃钢雕塑表面什么材质斗门商场美陈鞍山口碑好的沈阳玻璃钢花盆浙江通道商场美陈批发东莞透光玻璃钢雕塑生产商伊春动物玻璃钢雕塑价格成都欧式玻璃钢雕塑优势做玻璃钢雕塑大全玻璃钢卡通雕塑系列保山市玻璃钢雕塑玻璃钢雕塑工程施工玻璃钢仿铜雕塑安装湛江玻璃钢雕塑艺术品海西玻璃钢花盆珠海玻璃钢雕塑座椅个性化玻璃钢雕塑哪家专业上海梳头人物玻璃钢雕塑黑龙江抽象玻璃钢雕塑扬州小提琴玻璃钢花盆河北多彩玻璃钢雕塑方法六安公园玻璃钢雕塑圣诞商场美陈装饰虹口玻璃钢花盆花器青州玻璃钢雕塑北京小区玻璃钢雕塑生产厂家甘南动物玻璃钢雕塑价格天津玻璃钢花盆组合香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化