热点网|医学教育网|北京pk10开奖直播 pk10开奖直播 北京赛车pk10 pk10开奖直播 北京赛车pk10 PK10开奖直播 北京赛车pk10开奖直播 北京pk10 北京pk10

用HTML5 Canvas做一个画图板

一个简单的Canvas应用
服务器君一共花费了334.754 ms进行了5次数据库查询>,努力地为您提供了这个页面>。
试试阅读模式>?希望听取您的建议

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

效果演示

您的浏览器不支持canvas!

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

  1. 在canvas 上绑定mousedown 事件以标志绘画的开始(调用moveTo 移动画笔)
  2. 在document 上绑定mousemove 事件来处理绘画时的行为(调用lineTo 以及stroke 进行绘画)
  3. 在document 上绑定mouseup 事件以标志绘画的结束(解绑document 上的两个事件)

实现时需特别注意的一点是调用moveTo 以及lineTo 方法时如何传递正确的坐标值<,这个坐标值应该是光标相对于canvas 左上角的偏移量,获取时需要把canvas 相对于当前视口的位置考虑进去,getBoundingClientRect 方法则正好派上了用?>。ㄖС諬TML5 的浏览器应该都实现了这个方法)>,最后用event 对象的clientX, clientY 减去getBoundingClientRect 方法返回的left, top 值即可>。

下面是实现代码:

// <![CDATA[
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 方法实现<<。

本文地址:http://www.jzjxzzjx.com/librarys/veda/detail/1686,欢迎访问原出处。

不打个分吗>>?

转载随意<,但请带上本文地址:

http://www.jzjxzzjx.com/librarys/veda/detail/1686

如果你认为这篇文章值得更多人阅读>>,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D<,或点此 加入收藏>。

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了>。多少是多呢>?起码得看3<、4><、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统<<,因为在特定领域有一个足够量的知识量+足够良好的知识结构<,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了<。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话><,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以<,阅读一百本计算机著作吧,少年!

《Head First设计模式(中文版)》 弗里曼 (作者), 等 (作者)

《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式<,完整地涵盖了四人组版本全部23个设计模式<<<。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer<、Decorator、Abstract Factory><、Factory Method>、Singleton,Command<>、Adapter、Facade<>、TemplateMethod<、Iterator>、Composite、State、Proxy。最后三章比较特别。第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式)>,作者称其为复合设计模式(这是作者自创的名称<,并非四人组的标准名词)>。

更多计算机宝库...

  • 港媒称台战机“日晒雨淋” 台军将领出面否认 2018-05-22
  • 怎样和陈意涵袁姗姗一样拥有完美裸妆肤感? 2018-05-22
  • 《东北树木彩色图志》首次载入我国新发现植物“青姬木” 2018-05-22
  • 网约车司机无证上岗拟纳入失信黑名单无证司机失信 2018-05-20
  • 300余名澳门中学生参加国旗手训练营(组图) 2018-05-20
  • 法前总统萨科齐遭拘 或因利比亚前要人递新证据 2018-05-20
  • 美媒称中国新人婚纱摄影很疯狂:有的仿如电影拍摄现场 2018-05-19
  • 立陶宛举行“汉语桥”中文比赛 2018-05-19
  • 上海嘉禾2017秋季艺术品拍卖会 2018-05-18
  • 海归回国就业创业遇到困难怎么办他帮海归找工作就业创业留学生海归 2018-05-18
  • 扛不住了?台当局拟放宽许可条件鼓励陆客赴台 2018-05-17
  • 美名校毕业典礼竞邀女性演讲者 希拉里将前往耶鲁希拉里耶鲁演讲者 2018-05-16
  • 空姐遇害案告破!DNA鉴定打捞尸体确系嫌犯刘某华 2018-05-16
  • 44年前创举!美军运输机曾空射洲际导弹 2018-05-16
  • 中部新一线城市扩容 产业定位“只看高端” 2018-05-15
  • ASP300源码下载 | 微信红包群 | 设计 | 冠珠陶瓷 | 科技 | 北京赛车pk10微信源码 | 挖段子网 | 厦门旅游景点 | 旅游中国新闻网 | 钛媒体 | 健康网hsdcba | 每天资讯 | 广西农业技术信息 | 农业种植技术 |