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等相关属性制作分页导航实现代码
Dec 24 HTML / CSS
CSS类名支持中文命名的示例
Apr 04 HTML / CSS
HTML5 video视频字幕的使用和制作方法
May 03 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 HTML / CSS
基于html5绘制圆形多角图案
Apr 21 HTML / CSS
HTML5学习心得总结(推荐)
Jul 08 HTML / CSS
a标签下载链接的简单实现
Sep 13 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
Jan 03 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
CSS3实现模糊背景的三种效果示例
Mar 30 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
CSS3中Animation实现简单的手指点击动画的示例
Jul 15 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中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
python 写入csv乱码问题解决方法
2016/10/23 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
django中间键重定向实例方法
2019/11/10 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
HTML5制作表格样式
2016/11/15 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
大型活动组织方案
2014/05/10 职场文书
运动会口号16字
2014/06/07 职场文书
综艺节目策划方案
2014/06/13 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
《开国大典》教学反思
2016/02/16 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技