`
xjk2131650
  • 浏览: 57141 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

用HTML5 Canvas做一个画图板

阅读更多

 

使用HTML5可以非常简单地在canvas上实现画图应用,用支持html5的浏览器便可在下面的区域进行绘画,要看到演示效果,请确保你的浏览器支持HTML5:

点击演示效果

功能很简单,原理其实和拖放是类似的,主要是三个事件:

  1. 在canvas 上绑定mousedown 事件以标志绘画的开始(调用moveTo 移动画笔)
  2. 在document 上绑定mousemove 事件来处理绘画时的行为(调用lineTo 以及stroke 进行绘画)
  3. 在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 画图板.zip

    下面我们将深入探讨 Canvas API 以及如何使用这些资源来实现一个画图板。 首先,`index.html` 是网页的主文件,它定义了页面的基本结构。在这个项目中,`index.html` 应该包含一个 `<canvas>` 元素,它是整个画图板...

    html5 Canvas 画图板

    html5 Canvas 画图板,学习使用html5 Canvas ,让你画画更轻松

    基于HTML5 Canvas的画图板设计与实现

    本文详细分析了HTML5技术的简介和发展前景,并深入探讨了HTML5引入的核心标签Canvas元素,介绍了Canvas可以实现的主要功能,在此基础上实现了部分类似Windows画图板的功能,包括铅笔、图章仿制、画直线、圆、矩形、...

    基于HTMLCanvas的画图板设计和实现.doc

    本文讨论了基于HTMLCanvas的画图板设计和实现,详细介绍了HTML5技术的发展和前景,并深入探讨了HTML5引入的关键标签Canvas元素的实现和应用。 HTML5技术概述: HTML5是近十年来Web开发标准的巨大飞跃,相比以前版本...

    canvas定义画图板

    本教程将深入探讨`canvas`元素的定义和使用,以及如何通过JavaScript来操作它,创建一个基本的画图板。 一、canvas元素的定义 `<canvas>`元素是HTML5引入的新特性,它是一个内联块级元素,主要用于在网页上绘制图形...

    基于HTML5Canvas的画图板设计与实现.doc

    Canvas是一个2D图形绘制环境,允许开发者通过JavaScript进行动态和脚本化的图像渲染,从而实现类似画图板的各种功能。 Canvas元素提供了画布,开发者可以通过JavaScript API在上面绘制线条、形状、图像,甚至实现...

    基于HTML5_Canvas的画图板设计与实现

    在本文中,作者利用Canvas实现了一个类似Windows画图板的应用,包含了铅笔、图章仿制、直线、圆、矩形、橡皮擦、背景图、取色板和文字插入等功能,充分展示了Canvas的强大潜力。 在实现这个画图板的过程中,作者还...

    可定义笔刷和画布的HTML5 Canvas画板画图工具

    这个"可定义笔刷和画布的HTML5 Canvas画板画图工具"利用了Canvas API来创建一个互动的画布,用户可以在这个画布上进行绘画,选择不同的笔刷样式和颜色,实现丰富的创作功能。 1. **HTML5 Canvas基本概念**:Canvas...

    html5css3实现的在线画图板工具

    在这个“html5css3实现的在线画图板工具”项目中,我们将探讨如何利用这两种技术来构建一个实时绘图的应用。 首先,HTML5引入了一系列新的元素和API,使得开发者可以更方便地处理多媒体、图形以及离线存储等功能。...

    html5 canvas实现的绘图工具自由绘制图形画板源码

    html5 canvas实现的绘图工具自由绘制图形画板源码 有很多功能

    HTML5 Canvas支持手机端涂鸦画板下载.zip

    这个"HTML5 Canvas支持手机端涂鸦画板下载.zip"文件包含的是一款基于Canvas技术开发的画图工具,旨在提供一个兼容PC和手机的交互式画板,用户可以在此画板上进行涂鸦,并使用橡皮擦功能擦除部分画作。 在HTML5中,...

    基于HTML5-Canvas的画图板设计与实现.doc编程资料

    基于HTML5-Canvas的画图板设计与实现.doc

    HTML5 canvas简洁涂鸦画板代码.zip

    这个"HTML5 canvas简洁涂鸦画板代码.zip"提供的就是一个基于canvas实现的简单涂鸦画板,拥有丰富的功能,如画图、选择颜色、切换线条类型、调整线条宽度以及使用橡皮擦等。下面我们将详细探讨这些知识点。 首先,...

    HTML5 Canvas画板画图工具 可定义笔刷和画布应用模板.zip

    总的来说,"HTML5 Canvas画板画图工具 可定义笔刷和画布应用模板"是一个集成了HTML5 Canvas核心功能和自定义扩展的开发资源,它涵盖了从基本绘图到高级特效的诸多知识点,对于想要构建交互式图形应用的开发者来说,...

    基于JavaScript的canvas-drawing-board画图板设计源码

    本项目是一款基于JavaScript的Canvas画图板设计源码,综合运用HTML、CSS和JavaScript语言,共包含20个文件,其中包括5个PNG图片文件、3个地图文件、2个HTML文件、2个JavaScript文件、2个CSS文件、2个JSON文件、2个...

    html5 canvas 模拟Windows 画图程序.rar

    html5 canvas 模拟Windows 画图程序,初看上去,你会不会觉得这就是windows 的画图程序呢?界面和功能布局几乎是一样的,而且用起来也和Windows画图没啥区别,真心模拟的很像。运用Canvas技术来实现的画图程序。

    基于HTML5-Canvas的画图板设计与实现.doc

    HTML5中最引人注目的特性之一是Canvas元素,这是一个用于2D图形动态渲染的画布。Canvas提供了一个JavaScript接口,允许开发者通过编程的方式来绘制图形,无论是简单的线条、形状,还是复杂的动画效果,都能轻松实现...

    js结合canvas制作的画图板实例.zip

    在本文中,我们将深入探讨如何使用JavaScript与HTML5的Canvas元素来创建一个功能丰富的画图板实例。这个项目涉及到前端开发中的多个核心技术,包括CSS、HTML5、JavaScript以及jQuery库的使用。首先,让我们理解一下...

    html5 canvas实现绘图板

    html5 canvas绘图板,实现了如下功能: 1、调色(只有固定的几种颜色)、 2、改变笔触粗细、 3、撤销、 4、保存图片到本地、 5、改变画布颜色

Global site tag (gtag.js) - Google Analytics