视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用html5的canvas和JavaScript创建一个绘图程序的示例代码
2020-11-27 15:11:24 责编:小OO
文档


下面小编就为大家带来一篇用html5的canvas和JavaScript创建一个绘图程序的简单实例。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

XML/HTML Code复制内容到剪贴板
<canvas id="canvasInAPerfectWorld" width="490" height="220"></canvas>

获取绘图环境,context对象提供了用于在画布上绘图的方法和属性

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

开始绘图过程

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

var clickX = new Array(); 
var clickY = new Array(); 
var clickDrag = new Array();//存储路径点 
var paint;//是否绘制,mousedown时置为true 
function addClick(x, y, dragging) 
{ 
 clickX.push(x); 
 clickY.push(y); 
 clickDrag.push(dragging); 
}

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

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

function redraw(){ 
 context.clearRect(0, 0, context.canvas.width, context.canvas.height); // 清除画布内容 
 context.strokeStyle = "#df4b26";//设置线条颜色 
 context.lineJoin = "round";//当两条线条交汇时,创建圆形边角 
 context.lineWidth = 5;//线条粗细 
 for(var i=0; i < clickX.length; i++) { 
 context.beginPath();//开始一条路径,或重置当前的路径 
 if(clickDrag[i] && i){ 
 context.moveTo(clickX[i-1], clickY[i-1]); 
 }else{ 
 context.moveTo(clickX[i]-1, clickY[i]); 
 } 
 context.lineTo(clickX[i], clickY[i]); 
 context.closePath(); 
 context.stroke();//绘制路径 
 } 
}

绘制过程需要的事件

1 mousedown事件

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

$('#canvas').mousedown(function(e){ 
 var mouseX = e.pageX - this.offsetLeft; 
 var mouseY = e.pageY - this.offsetTop; 
 paint = true; 
 addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop); 
 redraw(); 
});
  • 2 mousemove事件

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

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

    3 mouseup事件

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

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

    4 mouseleave事件

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

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

    下载本文
    显示全文
    专题