国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS+HTML5 Canvas實現簡單的寫字板功能示例

2019-11-19 13:06:39
字體:
來源:轉載
供稿:網友

本文實例講述了JS+HTML5 Canvas實現簡單的寫字板功能。分享給大家供大家參考,具體如下:

先來看運行效果:

具體代碼如下:

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>www.survivalescaperooms.com JS寫字板</title>    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>    <style type="text/css">        body,html {            padding: 0;            margin: 0;        }        a,div,span {            font-family: "Arial","Microsoft YaHei","黑體","宋體",sans-serif;        }        .canvas-box {            display: block;            margin: 40px auto;            background: #f5f5f5;        }        .color-box {            width: 1080px;            display: block;            margin: 20px auto;            text-align: center;        }        .color-item {            display: inline-block;            vertical-align: middle;            width: 48px;            height: 24px;            margin: 10px;            background: #989898;            cursor: pointer;        }        .red {            background: #e01d5b;        }        .blue {            background: #1d6ae0;        }        .green {            background: #1de087;        }        .yellow {            background: #f3e41d;        }        .orange {            background: #f9850b;        }        .black {            background: #333;        }        .color-item.active {            border: solid 3px #565656;        }        .btn {            display: block;            width: 120px;            height: 40px;            line-height: 40px;            margin: 10px auto;            text-align: center;            font-size: 18px;            border: solid 1px #999;            border-radius: 5px;            cursor: pointer;        }    </style></head><body>    <canvas class="canvas-box" id="canvas"></canvas>    <div class="color-box">        <span class="color-item red"></span>        <span class="color-item blue"></span>        <span class="color-item green"></span>        <span class="color-item yellow"></span>        <span class="color-item orange"></span>        <span class="color-item black active"></span>    </div>    <div class="btn" onclick="clearDraw()">清除</div><script type="text/javascript">var    canvas = document.getElementById('canvas');var    context = canvas.getContext("2d");var    isDraw = false; //定義變量控制畫筆是否可用var movePos;         //定義變量存放初始畫筆開始位置var linWidth = 10;var linColor = '#333';window.onload = function(){    draw();}function draw(){    canvas.width = 500;    canvas.height = 500;    context.strokeStyle = "red";    context.lineWidth = 10;    context.beginPath();    context.strokeRect(0,0,500,500);    //設置畫筆顏色,寬度    context.strokeStyle = "red";    context.lineWidth = 1;    //使線段連續,圓滑    context.lineCap = "round";    context.lineJoin = "round";    drawDashedLine(context,0,0,500,500);    drawDashedLine(context,0,500,500,0);    drawLine(context,0,250,500,250);    drawLine(context,250,0,250,500);}//畫虛線(參照網上大神)function drawDashedLine(context, x1, y1, x2, y2, dashLength) {  dashLength = dashLength === undefined ? 5 : dashLength;  var deltaX = x2 - x1;  var deltaY = y2 - y1;  var numDashes = Math.floor(   Math.sqrt(deltaX * deltaX + deltaY * deltaY) / dashLength);   for (var i=0; i < numDashes; ++i) {   context[ i % 2 === 0 ? 'moveTo' : 'lineTo' ]    (x1 + (deltaX / numDashes) * i, y1 + (deltaY / numDashes) * i);   }  context.stroke();};//畫直線function drawLine(context,x1,y1,x2,y2){    context.moveTo(x1,y1);    context.lineTo(x2,y2);    context.stroke();};//獲取鼠標相對與canvas位置function getPos(x,y){    var box = canvas.getBoundingClientRect();    return {x: x-box.left,y: y-box.top};};//畫筆function drawing(e){    if(isDraw){        var position = getPos(e.clientX,e.clientY);        context.strokeStyle = linColor;        context.lineWidth = linWidth;        context.save();        context.beginPath();        context.moveTo(movePos.x,movePos.y);        context.lineTo(position.x,position.y);        context.stroke();        movePos = position;        context.restore();    }}//鼠標點下canvas.onmousedown = function(e){    isDraw = true;    movePos = getPos(e.clientX,e.clientY);    drawing(e);}//鼠標移動canvas.onmousemove = function(e){    drawing(e);}//鼠標松開canvas.onmouseup = function(e){    isDraw = false;}//鼠標離開canvas.onmouseout =function(e){    isDraw = false;}//選擇畫筆顏色$('.color-item').on('click',function(){    $(this).addClass('active').siblings().removeClass('active');    linColor = $(this).css('background-color');});//清除function clearDraw(){    context.clearRect(0,0,500,500);    draw();}</script></body></html>

感興趣的朋友還可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼,親身體驗一下運行效果。

更多關于JavaScript相關內容還可查看本站專題:《JavaScript+HTML5特效與技巧匯總》、《JavaScript圖形繪制技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 西峡县| 易门县| 连州市| 汤原县| 宁城县| 瑞金市| 建水县| 长春市| 六枝特区| 黄龙县| 茌平县| 濉溪县| 枣强县| 襄汾县| 嘉禾县| 广南县| 藁城市| 嘉祥县| 泗水县| 台湾省| 盘山县| 舒城县| 澳门| 新田县| 利川市| 成武县| 外汇| 四会市| 准格尔旗| 五华县| 南康市| 阿拉善右旗| 金乡县| 什邡市| 金溪县| 榕江县| 隆化县| 蒙城县| 扬中市| 桂阳县|