前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTML5绘画与拖放事件

HTML5绘画与拖放事件

作者头像
端碗吹水
发布2020-09-23 11:18:56
3K0
发布2020-09-23 11:18:56
举报
文章被收录于专栏:程序猿的大杂烩

HTML5绘画

在html5中出现了许多新的特性,绘画功能就是其中之一。由于html5新增的这些新特性,所以也在逐渐取代Flash,毕竟Flash比较占用内存,也经常性奔溃。

html5不仅能制作2d的绘画还能做3d的绘画,但是要注意的是这两者使用的函数不一样但都基于canvas。在网络上我们可以搜索到一些使用html5制作的2D或3D的效果图,例如:

除了以上这些图片效果外,html5的3D绘画还可以制作自由拖动的统计表格或一些图形。

如何使用html5进行绘画:

由于我们是做后端开发的,所以在这里只简单介绍一下html5中的2D绘画,绘画的制作都是基于canvas标签的,所以先介绍一下canvas标签:

canvas是一个画布,这个画布通常是一个矩形区域,我们可以控制这画布中的每一个像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

创建 Canvas 标签:

代码示例:

运行结果:

虽然绘画基于canvas,但是canvas本身并没有绘制能力,它仅仅是图形的容器,必须使用js脚本来完成实际的绘图任务。

通过 JavaScript 来绘制:

canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成,代码示例:

在以上代码中,我们需要通过getContext函数来创建Context绘画对象,Context对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

getContext函数可以传递以下几个参数,webgl是创建3D的绘画对象,而2d则是创建2d的绘画对象,至于experimental-webgl则是实验性质的3D绘画对象,在进行3D绘制的实验阶段可以使用此参数:

接下来使用fillStyle属性和fillRect函数在画布上绘制一个红色的矩形,fillStyle是用于设置颜色的,fillRect则定义了形状、位置和尺寸,代码示例:

运行结果:

理解坐标:

上面的 fillRect 方法拥有参数 (10,10,100,100)。

意思是:在画布上绘制 100x100 的矩形,从左上角开始 (10,10)。

如下图所示,画布的 X 和 Y 坐标用于在画布上对绘画进行定位。

绘制线条:

通过指定从何处开始,在何处结束,来绘制一条线:

代码示例:

运行结果:

绘制圆形:

通过规定尺寸、颜色和位置,来绘制一个圆:

代码示例:

运行结果:

绘制渐变颜色:

使用指定的颜色来绘制渐变背景:

代码示例:

运行结果:

图像:

把图像放置到画布上:

代码示例:

运行结果:

使用随机数和setTimeOut实现慢慢添加小方块:

运行结果:

利用以上所介绍的知识点制作一个2D坦克大战的地图:

代码示例:

运行结果:

地图可以自己在二维数组上绘制,1表示显示墙的图片,2表示显示钢板的图片,3则是显示草地的图片。

拖放事件

拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够实现拖放。

设置元素为可拖动:

为了使元素可拖动,需要把元素中的 draggable 属性设置为 true ,img元素是默认可拖动的,例如我把div设置为可拖动:

运行结果,可以看到能够将div拖动:

ondragstart 事件:

当元素被拖动时就会触发ondragstart 事件,然后通过事件源可以进行一些设置,或者打印消息。

代码示例:

运行结果:

ondragover事件:

ondragover 事件会在被别的元素触碰到时触发,通过这个事件的事件源对象,可以设置在何处放置被拖动的元素。

默认地,无法将元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。这要通过调用 ondragover 事件的 event.preventDefault() 方法。

在这个事件触发时也可以打印一些消息,代码示例:

运行结果:

ondrop事件:

当放置元素时,就会触发 drop 事件。

结合以上几个知识点,可以实现将img元素,来回拖放到不同的div元素中,代码示例:

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档