canvas 刮刮樂效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>audio</title>
    <style type="text/css">
        canvas {
            /* canvas 默認寬高 300*150 
        css設置的寬高,只能設置canvas對象在頁面顯示的大小。
        並不能增加畫布內部的像素數
    */
            margin: 0 auto;
            position: absolute;
            left: 0;
            top: 0;
        }

        div {
            width: 500px;
            height: 500px;
            background: url("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1566357763988&di=bcf0827252aa1c8bab453020de5ec75b&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F0128475543010c0000019ae92b7605.jpg%401280w_1l_2o_100sh.jpg") no-repeat;
            background-size: 100% 100%;
            position: relative;
        }

        div p {
            font-size: 50px;
            line-height: 500px;
            text-align: center;
            width: 100%;
        }
    </style>

</head>

<body>
    <!-- 在標籤上添加canvas像素值 -->
    <div>
        <p>一等獎</p>
        <canvas id="canvasId" width="500" height="500">您的瀏覽器不支持canvas!</canvas>
    </div>
    <script type="text/javascript">
        var cv = document.getElementById("canvasId"),
            p = document.getElementsByTagName("p")[0],
            ct = cv.getContext("2d");

        p.innerText = "一等獎";

        //繪製背景色
        ct.fillStyle = "#aaa";
        ct.fillRect(0, 0, 500, 500);
        //設置繪製狀態
        ct.lineCap = "round";   //設置線條兩端爲圓弧
        ct.lineWidth = 60;  //畫筆寬度
        /*設置新繪製清除新繪製內容和原內容的重疊區域*/
        ct.globalCompositeOperation = "destination-out";

        //繪製曲線
        var flag = false,
            lx, ly;

        cv.onmousedown = function (e) {
            flag = true;
            lx = e.offsetX;
            ly = e.offsetY;
        }
        cv.onmousemove = function (e) {
            if (flag) {
                ct.beginPath();
                ct.moveTo(lx, ly);
                ct.lineTo(e.offsetX, e.offsetY);
                ct.stroke();
                ct.closePath();
                //更新座標
                lx = e.offsetX;
                ly = e.offsetY;
            }
        }

        cv.onmouseup = function (e) {
            flag = false;
        }
    </script>

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