JavaScript+Canvas实现自定义画板的示例代码


Posted in HTML / CSS onMay 13, 2019

最近研究了HTML5一些新的元素属性,发现确实好用,特别是里面的Canvas这个新的标签元素。官方介绍:Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。以下使用JavaScript结合Canvas实现一个画板功能

效果演示图:

JavaScript+Canvas实现自定义画板的示例代码

代码部分(直接复制便可使用)

<!DOCTYPE HTML>
<html>
<head>  
<meta charset="utf-8" />  
<title>JavaScript+Canvas实现自定义画板</title>
</head>
<body>
<canvas id="canvas"  width="600" height="300"></canvas>
<script type="text/javascript">   
  var canvas = document.getElementById("canvas");   
  var ctx = canvas.getContext("2d");   
  //画一个黑色矩形   
  ctx.fillStyle="black";   
  ctx.fillRect(0,0,600,300);   
  //按下标记   
  var onoff = false;  
  //变量oldx跟oldy代表鼠标移动前的坐标  
  var oldx = -10;   
  var oldy = -10;   
  //设置颜色  
  var linecolor = "white";   
  //设置线宽   
  var linw = 4;   
  //添加鼠标移动事件   
  canvas.addEventListener("mousemove",draw,true);  //第三个参数主要跟捕获或者冒泡有关   
  //添加鼠标按下事件   
  canvas.addEventListener("mousedown",down,false);   
  //添加鼠标弹起事件   
  canvas.addEventListener("mouseup",up,false);   
  function down(event){     
   onoff = true;     
   oldx = event.pageX-10;      
   oldy = event.pageY-10;  
   //console.log(event.pageX+'..............000.............'+event.pageY);
  //event.pageX跟event.pageY相对于整个页面鼠标的位置 包括溢出的部分(就是滚动条)   
  }   
  function up(){     
   onoff = false;   
 }  
 function draw(event){    
  if(onoff == true){        
   var newx = event.pageX-10;        
   var newy = event.pageY-10;        
   ctx.beginPath();//beginPath() 丢弃任何当前定义的路径并且开始一条新的路径。它把当前的点设置为 (0,0)。       
   ctx.moveTo(oldx,oldy);   //移动到点击时候的坐标,以那个坐标为原点      
   ctx.lineTo(newx,newy);   //绘制新的路径       
   ctx.strokeStyle=linecolor;       
   ctx.lineWidth=linw;       
   ctx.lineCap="round";       
   ctx.stroke();//stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色。    
//将新的鼠标位置赋给下一次开始绘制的起始坐标      
   oldx = newx;      
   oldy = newy;   
  };
 };
</script>
</body>
</html>

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

HTML / CSS 相关文章推荐
css3 iphone玻璃透明气泡完美实现
Mar 20 HTML / CSS
纯css3实现照片墙效果
Dec 26 HTML / CSS
CSS3哪些新特性值得称赞
Mar 02 HTML / CSS
CSS3按钮鼠标悬浮实现光圈效果源码
Sep 11 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
Html5 实现微信分享及自定义内容的流程
Aug 20 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
Jan 29 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
Jun 01 HTML / CSS
HTML5中使用json对象的实例代码
Sep 10 HTML / CSS
浅谈HTML5新增和废弃的标签
Apr 28 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
Sep 05 HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
Apr 28 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 #HTML / CSS
基于Html5实现的语音搜索功能
May 13 #HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
May 05 #HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
Apr 30 #HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
Apr 29 #HTML / CSS
浅谈HTML5新增和废弃的标签
Apr 28 #HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
Apr 25 #HTML / CSS
You might like
谈谈PHP语法(4)
2006/10/09 PHP
帝国cms目录结构分享
2015/07/06 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
定义select的边框颜色
2008/04/28 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
javascript数组的使用
2013/03/28 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
js中生成map对象的方法
2014/01/09 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
基于python实现把图片转换成素描
2019/11/13 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
工程管理专业个人求职信范文
2013/12/07 职场文书
小区推广策划方案
2014/06/06 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python