本文摘自PHP中文网,作者黄舟,侵删。
下面小编就为大家带来一篇用html5的canvas和JavaScript创建一个绘图程序的简单实例。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧本文将引导你使用canvas和JavaScript创建一个简单的绘图程序。
首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面。
1 2 | XML/HTML Code复制内容到剪贴板
< canvas id = "canvasInAPerfectWorld" width = "490" height = "220" ></ canvas >
|
获取绘图环境,context对象提供了用于在画布上绘图的方法和属性
1 | context = document.getElementById('canvasInAPerfectWorld').getContext("2d");
|
开始绘图过程
首先我们需要存储绘图路径点坐标,addClick函数添加坐标点值到数组
1 2 3 4 5 6 7 8 9 10 | var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();
var paint;
function addClick(x, y, dragging)
{
clickX.push(x);
clickY.push(y);
clickDrag.push(dragging);
}
|
redraw函数每次调用整个canvas就会重新绘制一次。首先我们清空画布上内容,设置绘制线条颜色粗细线条连接方式。然后
两点之间绘制一段路径,将数组中的坐标点依次绘制出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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。
1 2 3 4 5 6 7 | $( '#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重绘画布。
1 2 3 4 5 6 | $( '#canvas' ).mousemove( function (e){
if (paint){
addClick(e.pageX - this .offsetLeft, e.pageY - this .offsetTop, true );
redraw();
}
});
|
3 mouseup事件
mouseup鼠标点击后松开或者拖拽后松开,表示绘制完成该路径,将paint置为false。
1 2 3 | $( '#canvas' ).mouseup( function (e){
paint = false ;
});
|
4 mouseleave事件
mouseleave鼠标离开canvas元素,将paint置为false。
1 2 3 | $( '#canvas' ).mouseleave( function (e){
paint = false ;
});
|
以上就是使用html5的canvas和JavaScript创建一个绘图程序的示例代码的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
HTML5的web界面中meta实列详解
javascript会代替java吗
10个开发者经常问的javascript面试题(附答案解析)
HTML5 history模式是什么
canvas处理图片的方法
javascript怎么保留两位小数
vue.js框架怎么下载
javascript中sort()方法怎么用
nw.js的localstorage的物理储存实例详解
javascript高阶函数的详细介绍(附代码)
更多相关阅读请进入《HTML5》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 使用html5的canvas和JavaScript创建一个绘图程序的示例代码