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伸缩布局盒模型Flex布局
Aug 20 HTML / CSS
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
Nov 29 HTML / CSS
实例讲解CSS3中的border-radius属性
Aug 18 HTML / CSS
基于html和CSS3制作酷炫的导航栏
Sep 23 HTML / CSS
使用CSS3实现多列布局与多背景的技巧
Feb 29 HTML / CSS
CSS3 实现弹跳的小球动画
Oct 26 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
css3 实现滚动条美化效果的实例代码
Jan 06 HTML / CSS
使用HTML5捕捉音频与视频信息概述及实例
Aug 22 HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 HTML / CSS
html5本地存储_动力节点Java学院整理
Jul 12 HTML / CSS
clear 万能清除浮动(clearfix:after)
May 21 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
php命令行写shell实例详解
2018/07/19 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
浅谈vuex中store的命名空间
2019/11/08 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
python编程开发之类型转换convert实例分析
2015/11/13 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
Python中的全局变量如何理解
2020/06/04 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
如何利用cmp命令比较文件
2016/04/11 面试题
班长演讲稿范文
2014/04/24 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
2014年行政工作总结
2014/11/19 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书