用canvas畫一個微笑的表情

實習期間讓我用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>

  • 效果圖

圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章