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 相关文章推荐
JS教程:window.location使用方法的区别介绍
Oct 04 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
arguments对象验证函数的参数是否合法
Jun 26 Javascript
学习javascript的闭包,原型,和匿名函数之旅
Oct 18 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
Oct 09 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
详解JS中的attribute属性
Apr 25 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
Nov 26 Javascript
手把手教你从零开始react+antd搭建项目
Jun 03 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 如何获取文件的后缀名
2016/06/05 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
javascript 特殊字符串
2009/02/25 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
TensorFlow平台下Python实现神经网络
2018/03/10 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python将字符串转换成json的方法小结
2019/07/09 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
学生实习推荐信范文
2013/11/26 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers