javascript实现画板功能


Posted in Javascript onApril 12, 2020

本文实例为大家分享了javascript实现画板功能的具体代码,供大家参考,具体内容如下

画板功能的实现

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 <style type="text/css">
 *{
 margin: 0;
 padding: 0;
 list-style: none;
 }
 
 body{
 background:url(11.jpg) 0 0 no-repeat;
 }
 
 .wrapper{
 margin: 10px;
 }
 
 .wrapper canvas{
 border: 1px solid blue;
 border-radius:25px;
 box-shadow: 10px 10px 5px brown;
 margin-bottom: 16px;
 background-color: #fff;
 
 }
 .wrapper .btn-list{
 width: 1000px;
 text-align: center;
 }
 
 .wrapper .btn-list li{
 display: inline-block;
 margin-left: 40px;
 
 }
 .wrapper .btn-list li input{
 background-color: darkgreen;
 color: blanchedalmond
 border: none;
 padding: 6px 13px;
 cursor: pointer;
 border-radius:25px;
 font-size: 18px;
 display: block;
 transition-duration: 0.2s;
 }
 
 .wrapper .btn-list li input:hover{
 border: 1px solid chocolate;
 box-shadow: 0 12px 15px 0 rgba(0,0,0,0.5);
 }
 </style>
 </head>
 <body>
 <!-- div.wrapper>canvas+ul.btn-list>li*5>input -->
 
 <div class="wrapper"> 
 <canvas class="cavs" width="1000" height="500"></canvas>
 <ul class="btn-list">
 <li><input type="color" id="colorBoard" value="colorBoard"></li>
 <li><input type="button" id="cleanBoard" value="清屏"></li>
 <li><input type="button" id="eraser" value="橡皮"></li>
 <li><input type="button" id="rescind" value="撤销"></li>
 <li><input type="range" id="lineRuler" value="线条" min="1" max="30"></li>
 </ul>
 </div>
 </body>
 
 <script src="jquery-3.4.1.min.js"></script>
 <script>
 var drawingLineObj = {
 cavs:$('.cavs'),
 context:$('.cavs').get(0).getContext('2d'),
 colorBoard:$('#colorBoard'),
 cleanBoard:$('#cleanBoard'),
 arrImg:[],
 eraser:$("#eraser"),
 rescind:$('#rescind'),
 lineRuler:$('#lineRuler'), 
 bool:false,
 init:function(){ 
 this.context.lineCap = 'round'; //线条起始与结尾样式
 this.context.lineJoin = 'round'; //转弯
 this.draw(); //画笔函数
 this.btnFn(); //按钮函数
 },  
 
 draw:function(){ 
 var cavs = this.cavs,
 self = this;
 var c_x = cavs.offset().left, //canvas离左边的距离
 c_y = cavs.offset().top; //canvas离上边的距离
 
 cavs.mousedown(function(e){
 e = e||window.event;
 self.bool = true;
 var m_x = e.pageX - c_x, //鼠标点距离减去canvas离左边的距离等于画布点
  m_y = e.pageY - c_y; //鼠标点距离减去canvas离上边的距离等于画布点
 self.context.beginPath();
  self.context.moveTo(m_x,m_y);//鼠标在画布上的点
 var imgData = self.context.getImageData(0,0,self.cavs[0].width,self.cavs[0].height);
 self.arrImg.push(imgData);
 //console.log(self.arrImg);
 
 })
 cavs.mousemove(function(e){
 if(self.bool){ //定义一把锁,防止鼠标移开滑动
 self.context.lineTo(e.pageX-c_x,e.pageY-c_y);
 self.context.stroke(); //绘制出路径
 }
 
 })
 cavs.mouseup(function(){
  self.context.closePath(); //结束自动闭合
 self.bool = false; //鼠标不移动时画笔断开
 
 })
 cavs.mouseleave(function(){
 self.context.closePath(); //结束自动闭合
 self.bool = false; //鼠标不移动时画笔断开
  
 
 }) 
 
 
 },   
 btnFn:function(){ 
 var self = this;
 $('.btn-list').on('click',function(e){ 
 e = e||window.event;
 switch(e.target.id){ //target
 case 'cleanBoard':
 self.context.clearRect(0,0,self.cavs[0].width,self.cavs[0].height) //[0]
 break
 case 'eraser':
 self.context.strokeStyle = '#fff'
 break
 case 'rescind':
 if(self.arrImg.length>0){
 self.context.putImageData(self.arrImg.pop(),0,0);
 break
 } 
 
 }
 })      
 this.colorBoard.change(function(e){ //当颜色变化时改变字体的颜色
 self.context.strokeStyle = $(this).val();
 })
 
 this.lineRuler.change(function(e){ //线条的变化值
 self.context.lineWidth = $(this).val();
 })
 
 }
 
 }   
 drawingLineObj.init();
 
 </script>
</html>

javascript实现画板功能

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

Javascript 相关文章推荐
jQuery学习笔记之2个小技巧
Jan 19 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
Aug 06 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Jun 02 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
Jun 19 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 Javascript
JS实现随机点名器
Apr 12 #Javascript
微信小程序实现抖音播放效果的实例代码
Apr 11 #Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 #Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 #Javascript
js函数柯里化的方法和作用实例分析
Apr 11 #Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 #Javascript
JavaScript运行机制实例分析
Apr 11 #Javascript
You might like
php+xml编程之xpath的应用实例
2015/01/24 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
angular2模块和共享模块详解
2018/04/08 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python异常处理操作实例详解
2018/08/28 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
Solaris操作系统的线程机制
2012/12/23 面试题
中式婚礼主持词
2014/03/13 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
南京青奥会口号
2014/06/12 职场文书
超市促销活动总结
2014/07/01 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
2019财务转正述职报告
2019/06/27 职场文书
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers
Python中tqdm的使用和例子
2022/09/23 Python