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 相关文章推荐
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 HTML / CSS
一款纯css3实现的tab选项卡的实列教程
Dec 11 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
Jan 13 HTML / CSS
localStorage 设置过期时间的方法实现
Dec 21 HTML / CSS
canvas基础之图形验证码的示例
Jan 02 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
Jun 25 HTML / CSS
html5基础教程常用技巧整理
Aug 20 HTML / CSS
使用html5制作loading图的示例
Apr 14 HTML / CSS
用HTML5制作烟火效果的教程
May 12 HTML / CSS
浅析HTML5页面元素及属性
Jan 20 HTML / CSS
POST提交数据常见的四种方式
Jan 18 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中的字符串函数
2006/11/24 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
javascript date格式化示例
2013/09/25 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
深入理解python对json的操作总结
2017/01/05 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
英国著名药妆店:Superdrug
2021/02/13 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
后备干部推荐材料
2014/12/24 职场文书
档案接收函格式
2015/01/30 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers