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 相关文章推荐
支持ie与FireFox的剪切板操作代码
Sep 28 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
Jul 13 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
Javascript实现单张图片浏览
Dec 18 Javascript
vue,angular,avalon这三种MVVM框架优缺点
Apr 27 Javascript
浅谈JavaScript变量的自动转换和语句
Jun 12 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
JavaScript常用工具方法封装
Feb 12 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
JS代码实现页面切换效果
Jan 10 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中Stream(流)
2015/06/08 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
Python threading多线程编程实例
2014/09/18 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python的标准模块包json详解
2017/03/13 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python语言进阶知识点总结
2019/05/28 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
Python tornado上传文件的功能
2020/03/26 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
工作疏忽检讨书
2014/01/25 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
班级寄语大全
2014/04/10 职场文书
避暑山庄导游词
2015/02/04 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫