详解如何用canvas画一个微笑的表情


Posted in HTML / CSS onMarch 14, 2019

实习期间让我用canvas画一个表情,比较简单,话不多说直接上代码:

<body>

<div id="canvas-warp">
    <canvas id="canvas" style="display: block; margin: 200px auto;">
        你的浏览器居然不支持Canvas!
    </canvas>
</div>
<script>
    window.onload = function () {
        var canvas = document.getElementById("canvas");
        canvas.width = 400;
        canvas.height = 400;
        //获取上下文
        var context = canvas.getContext("2d");
        //用于画有填充色圆的函数  参数分别为圆心坐标 ,半径,起始与终止位置,线颜色,填充颜色
        function drawCircle(x2, y2, r2, a2, b2, lineColor, FillColor) {
            context.beginPath();
            context.arc(x2, y2, r2, a2, b2 * Math.PI);
            context.strokeStyle = lineColor;
            context.fillStyle = FillColor;
            context.fill(); //确认填充
            context.stroke();
        };
        //用于画圆弧函数 默认线条为黑色 无填充 参数分别为:圆心x坐标,圆心y坐标,半径,开始位置,终止位置
        function drawsArc(x, y, r, l1, l2) {
            context.beginPath();
            context.arc(x, y, r, l1 * Math.PI, l2 * Math.PI);
            context.strokeStyle = "black";
            context.stroke();
        };
        //用于画眼睛的函数
        function darwEyes(x1, y1, a1, b1) { //参数分别为椭圆圆心位置 长轴  短轴
            context.strokeStyle = "#754924"
            ParamEllipse(context, x1, y1, a1, b1); //椭圆
            function ParamEllipse(context, x, y, a, b) {
                //使每次循环所绘制的路径(弧线)接近1像素
                var step = (a > b) ? 1 / a : 1 / b;
                context.beginPath();
                context.moveTo(x + a, y); //从椭圆的左端点开始绘制
                for (var i = 0; i < 2 * Math.PI; i += step) {
                    //参数为i,表示度数(弧度)
                    context.lineTo(x + a * Math.cos(i), y + b * Math.sin(i));
                }
                context.closePath();
                context.fillStyle = "#754924";
                context.fill(); 
                context.stroke();
            };
        };
        //脸
        drawCircle(200, 200, 200, 0, 2, "#EEE685", "#FCF200");
        //左眼
        context.strokeStyle = "#754924"
        darwEyes(116, 130, 18, 25);
        drawCircle(110, 127, 12, 0, 2, "#754924", "#F5F5F5");
        //右眼
        darwEyes(296, 130, 18, 25);
        drawCircle(290, 127, 12, 0, 2, "#754924", "#F5F5F5");
        //左眉毛
        drawsArc(100, 100, 50, 1.3, 1.7);
        //右眉毛
        drawsArc(300, 100, 50, 1.3, 1.7);
        //嘴巴
        drawsArc(200, 120, 180, 0.3, 0.7);
    }
</script>
</body>

效果图

详解如何用canvas画一个微笑的表情

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
IE滤镜与CSS3效果(详细整理分享)
Jan 25 HTML / CSS
纯CSS3打造属于自己的“小黄人”
Mar 14 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
Aug 03 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
Mar 01 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
Jan 30 HTML / CSS
html5实现微信打飞机游戏
Mar 27 HTML / CSS
深入浅析HTML5中的SVG
Nov 27 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
HTML5实现无刷新修改URL的方法
Nov 14 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
css display table 自适应高度、宽度问题的解决
May 07 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
Apr 04 #HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
Apr 10 #HTML / CSS
canvas画布实现手写签名效果的示例代码
Apr 23 #HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
Apr 26 #HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
Apr 28 #HTML / CSS
Html5实现单张、多张图片上传功能
Apr 28 #HTML / CSS
鲜为人知的HTML5语音合成功能
May 17 #HTML / CSS
You might like
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
应聘教师推荐信
2013/10/31 职场文书
接受捐赠答谢词
2014/01/27 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
个人收入证明范本
2015/06/12 职场文书
会议营销主持词
2015/07/03 职场文书
七一慰问简报
2015/07/20 职场文书
自信主题班会
2015/08/14 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
Nebula Graph解决风控业务实践
2022/03/31 MySQL
nginx容器方式反向代理实战
2022/04/18 Servers
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python