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 相关文章推荐
javascript 面向对象编程 聊聊对象的事
Sep 17 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
js全屏显示显示代码的三种方法
Nov 11 Javascript
解决json日期格式问题的3种方法
Feb 02 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
适用于javascript开发者的Processing.js入门教程
Feb 24 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
May 29 Javascript
理解JavaScript原型链
Oct 25 Javascript
React组件的三种写法总结
Jan 12 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
fgetcvs在linux的问题
2012/01/15 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
理解PHP中的stdClass类
2014/04/18 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
javascript 精粹笔记
2010/05/09 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
详解vue-router基本使用
2017/04/18 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
python实现的Iou与Giou代码
2020/01/18 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
个人自我评价范文
2014/02/05 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
学校交通安全责任书
2014/08/25 职场文书
停电通知范文
2015/04/16 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
python中%格式表达式实例用法
2021/06/18 Python
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL