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 阴影插件代码分享
Jan 09 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
将鼠标焦点定位到文本框最后(代码分享)
Jan 11 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
JS不要再到处使用绝对等于运算符了
Apr 30 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 header示例代码(推荐)
2010/09/08 PHP
php实现快速排序法函数代码
2012/08/27 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
单位绩效考核方案
2014/05/11 职场文书
防灾减灾标语
2014/10/07 职场文书
思想品德评语大全
2014/12/31 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL