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

所属分类: 网页制作 / html5 阅读数: 1598
收藏 0 赞 0 分享

实习期间让我用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>

效果图

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

更多精彩内容其他人还在看

HTML5 Canvas锯齿图代码实例

这篇文章主要介绍了HTML5 Canvas锯齿图代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享

html5图片上传预览示例分享

这篇文章主要介绍了html5图片上传预览示例,需要的朋友可以参考下
收藏 0 赞 0 分享

html5的canvas元素使用方法介绍(画矩形、画折线、圆形)

HTML5的canvas元素使用JavaScript在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
收藏 0 赞 0 分享

使用html5制作loading图的示例

这篇文章主要介绍了使用html5制作loading图的示例,需要的朋友可以参考下
收藏 0 赞 0 分享

html5读取本地文件示例代码

这篇文章主要介绍了html5读取本地文件的具体实现,html结构样式、Css样式及js代码如下,需要的朋友可以看看哦
收藏 0 赞 0 分享

html5菜单折纸效果

这篇文章主要介绍了html5菜单折纸效果,类似猎豹浏览器安装时的用户须知效果,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5添加鼠标悬浮音响效果不使用FLASH

使用HTML5+jQuery添加鼠标悬浮音响效果,兼容Firefox 3.5+, Chrome 3+等等,使用html5的audio元素,随机播放一个mp3音效,需要的朋友可以参考下
收藏 0 赞 0 分享

HTML5中的Scoped属性使用实例

HTML5的变革给我们带来了大量非常有用的新属性,比如placeholder, download, hidden,等等。每一种新属性都给我们带来了对页面元素新的控制方法和控制效力
收藏 0 赞 0 分享

HTML5的hidden属性兼容老浏览器的方法

HTML5给我们带来了很多非常简单但却非常强大的HTML属性:placeholder, download, and autofocus,等等
收藏 0 赞 0 分享

html5基础标签(html5视频标签 html5新标签用法)

html5基础,包括html5视频标签和html5新标签等标签用法,大家参考使用吧
收藏 0 赞 0 分享
查看更多