HTML5技术

用html5的canvas和JavaScript创建一个绘图程序 - 方帅

字号+ 作者:H5之家 来源:H5之家 2016-07-06 17:00 我要评论( )

本文将引导你使用canvas和JavaScript创建一个简单的绘图程序。 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面。 获取绘图环境,getContext() 方法返回一个用于在画布上绘图的环境。context对象提供了用于在画布上绘图的方法和属性。 1 cont

本文将引导你使用canvas和JavaScript创建一个简单的绘图程序。

 

首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面。

获取绘图环境,getContext() 方法返回一个用于在画布上绘图的环境。context对象提供了用于在画布上绘图的方法和属性。

1 context = document.getElementById('canvasInAPerfectWorld').getContext("2d");

开始绘图过程

首先我们需要存储绘图路径点坐标,addClick函数添加坐标点值到数组

var clickX = new Array(); var clickY = new Array(); var clickDrag = new Array();//存储路径点 addClick(x, y, dragging) { clickX.push(x); clickY.push(y); clickDrag.push(dragging); }

redraw函数每次调用整个canvas就会重新绘制一次。首先我们清空画布上内容,设置绘制线条颜色粗细线条连接方式。然后

两点之间绘制一段路径,将数组中的坐标点依次绘制出来

1 function redraw(){ context.strokeStyle = "#df4b26";context.lineJoin = "round";context.lineWidth = 5;(var i=0; i < clickX.length; i++) { (clickDrag[i] && i){ 11 context.moveTo(clickX[i-1], clickY[i-1]); 12 }else{ 13 context.moveTo(clickX[i]-1, clickY[i]); 14 } 15 context.lineTo(clickX[i], clickY[i]); 16 context.closePath(); } 19 }

 

绘制过程需要的事件

1 mousedown事件

绘图这点击到画布上时,将触发该事件执行。调用了addClick函数,并将paint置为true。

1 $('#canvas').mousedown(function(e){ 2 var mouseX = e.pageX - this.offsetLeft; paint = true; 6 addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop); 7 redraw(); 8 });

2 mousemove事件

mousedown中设置的paint为true后,鼠标移动时触发mousemove事件执行,将鼠标移动的所有点记录下来,并不断调用redraw重绘画布。

1 $('#canvas').mousemove(function(e){ 2 if(paint){ 3 addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true); 4 redraw(); 5 } 6 });

3 mouseup事件

mouseup鼠标点击后松开或者拖拽后松开,表示绘制完成该路径,将paint置为false。

1 $('#canvas').mouseup(function(e){ 2 paint = false; 3 });

4 mouseleave事件

mouseleave鼠标离开canvas元素,将paint置为false。

1 $('#canvas').mouseleave(function(e){ 2 paint = false; 3 });

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    2017-05-02 11:02

  • HTML5 进阶系列:indexedDB 数据库 - _林鑫

    HTML5 进阶系列:indexedDB 数据库 - _林鑫

    2017-04-27 14:02

  • HTML5 高级系列:web Storage - _林鑫

    HTML5 高级系列:web Storage - _林鑫

    2017-04-27 14:01

  • HTML5和CSS3 - 奔跑在起跑线佼佼者

    HTML5和CSS3 - 奔跑在起跑线佼佼者

    2017-04-20 13:00

网友点评