使用HTML5可以非常简单地在canvas上实现画图应用,用支持html5的浏览器便可在下面的区域进行绘画,要看到演示效果,请确保你的浏览器支持HTML5:
功能很简单,原理其实和拖放是类似的,主要是三个事件:
- 在canvas 上绑定mousedown 事件以标志绘画的开始(调用moveTo 移动画笔)
- 在document 上绑定mousemove 事件来处理绘画时的行为(调用lineTo 以及stroke 进行绘画)
- 在document 上绑定mouseup 事件以标志绘画的结束(解绑document 上的两个事件)
实现时需特别注意的一点是调用moveTo 以及lineTo 方法时如何传递正确的坐标值,这个坐标值应该是光标相对于canvas 左上角的偏移量,获取时需要把canvas 相对于当前视口的位置考虑进去,getBoundingClientRect 方法则正好派上了用场(支持HTML5 的浏览器应该都实现了这个方法),最后用event 对象的clientX, clientY 减去getBoundingClientRect 方法返回的left, top 值即可。
下面是实现代码:function Draw(arg) {
if (arg.nodeType) {
this.canvas = arg;
} else if (typeof arg == 'string') {
this.canvas = document.getElementById(arg);
} else {
return;
}
this.init();
}
Draw.prototype = {
init: function() {
var that = this;
if (!this.canvas.getContext) {
return;
}
this.context = this.canvas.getContext('2d');
this.canvas.onselectstart = function () {
return false; //修复chrome下光标样式的问题
};
this.canvas.onmousedown = function(event) {
that.drawBegin(event);
};
},
drawBegin: function(e) {
var that = this,
stage_info = this.canvas.getBoundingClientRect();
window.getSelection ? window.getSelection().removeAllRanges() :
document.selection.empty(); //清除文本的选中
this.context.moveTo(
e.clientX - stage_info.left,
e.clientY - stage_info.top
);
document.onmousemove = function(event) {
that.drawing(event);
};
document.onmouseup = this.drawEnd;
},
drawing: function(e) {
var stage_info = this.canvas.getBoundingClientRect();
this.context.lineTo(
e.clientX - stage_info.left,
e.clientY - stage_info.top
);
this.context.stroke();
},
drawEnd: function() {
document.onmousemove = document.onmouseup = null;
}
};
var draw = new Draw('the_stage');
就这样一个简单的鼠绘功能就完成了,不足之处也有,比如不能够画点。。。 我个人觉得用canvas 来做画图还是比较弱的,复杂一些的功能就不太好实现了,不过大家也可以尝试下哦,比如要添加个保存图片的方法,定义Draw.prototype.save = function() {...},其中可调用toDataURL 方法实现。
分享到:
相关推荐
下面我们将深入探讨 Canvas API 以及如何使用这些资源来实现一个画图板。 首先,`index.html` 是网页的主文件,它定义了页面的基本结构。在这个项目中,`index.html` 应该包含一个 `<canvas>` 元素,它是整个画图板...
html5 Canvas 画图板,学习使用html5 Canvas ,让你画画更轻松
本文详细分析了HTML5技术的简介和发展前景,并深入探讨了HTML5引入的核心标签Canvas元素,介绍了Canvas可以实现的主要功能,在此基础上实现了部分类似Windows画图板的功能,包括铅笔、图章仿制、画直线、圆、矩形、...
本文讨论了基于HTMLCanvas的画图板设计和实现,详细介绍了HTML5技术的发展和前景,并深入探讨了HTML5引入的关键标签Canvas元素的实现和应用。 HTML5技术概述: HTML5是近十年来Web开发标准的巨大飞跃,相比以前版本...
本教程将深入探讨`canvas`元素的定义和使用,以及如何通过JavaScript来操作它,创建一个基本的画图板。 一、canvas元素的定义 `<canvas>`元素是HTML5引入的新特性,它是一个内联块级元素,主要用于在网页上绘制图形...
Canvas是一个2D图形绘制环境,允许开发者通过JavaScript进行动态和脚本化的图像渲染,从而实现类似画图板的各种功能。 Canvas元素提供了画布,开发者可以通过JavaScript API在上面绘制线条、形状、图像,甚至实现...
在本文中,作者利用Canvas实现了一个类似Windows画图板的应用,包含了铅笔、图章仿制、直线、圆、矩形、橡皮擦、背景图、取色板和文字插入等功能,充分展示了Canvas的强大潜力。 在实现这个画图板的过程中,作者还...
这个"可定义笔刷和画布的HTML5 Canvas画板画图工具"利用了Canvas API来创建一个互动的画布,用户可以在这个画布上进行绘画,选择不同的笔刷样式和颜色,实现丰富的创作功能。 1. **HTML5 Canvas基本概念**:Canvas...
在这个“html5css3实现的在线画图板工具”项目中,我们将探讨如何利用这两种技术来构建一个实时绘图的应用。 首先,HTML5引入了一系列新的元素和API,使得开发者可以更方便地处理多媒体、图形以及离线存储等功能。...
html5 canvas实现的绘图工具自由绘制图形画板源码 有很多功能
这个"HTML5 Canvas支持手机端涂鸦画板下载.zip"文件包含的是一款基于Canvas技术开发的画图工具,旨在提供一个兼容PC和手机的交互式画板,用户可以在此画板上进行涂鸦,并使用橡皮擦功能擦除部分画作。 在HTML5中,...
基于HTML5-Canvas的画图板设计与实现.doc
这个"HTML5 canvas简洁涂鸦画板代码.zip"提供的就是一个基于canvas实现的简单涂鸦画板,拥有丰富的功能,如画图、选择颜色、切换线条类型、调整线条宽度以及使用橡皮擦等。下面我们将详细探讨这些知识点。 首先,...
总的来说,"HTML5 Canvas画板画图工具 可定义笔刷和画布应用模板"是一个集成了HTML5 Canvas核心功能和自定义扩展的开发资源,它涵盖了从基本绘图到高级特效的诸多知识点,对于想要构建交互式图形应用的开发者来说,...
本项目是一款基于JavaScript的Canvas画图板设计源码,综合运用HTML、CSS和JavaScript语言,共包含20个文件,其中包括5个PNG图片文件、3个地图文件、2个HTML文件、2个JavaScript文件、2个CSS文件、2个JSON文件、2个...
html5 canvas 模拟Windows 画图程序,初看上去,你会不会觉得这就是windows 的画图程序呢?界面和功能布局几乎是一样的,而且用起来也和Windows画图没啥区别,真心模拟的很像。运用Canvas技术来实现的画图程序。
HTML5中最引人注目的特性之一是Canvas元素,这是一个用于2D图形动态渲染的画布。Canvas提供了一个JavaScript接口,允许开发者通过编程的方式来绘制图形,无论是简单的线条、形状,还是复杂的动画效果,都能轻松实现...
在本文中,我们将深入探讨如何使用JavaScript与HTML5的Canvas元素来创建一个功能丰富的画图板实例。这个项目涉及到前端开发中的多个核心技术,包括CSS、HTML5、JavaScript以及jQuery库的使用。首先,让我们理解一下...
html5 canvas绘图板,实现了如下功能: 1、调色(只有固定的几种颜色)、 2、改变笔触粗细、 3、撤销、 4、保存图片到本地、 5、改变画布颜色