HTML5实现绘制几何图形

Wesley13
• 阅读 818

HTML5新增了一个<canvas.../>属性。该元素自身并不绘制图形,只是相当于一张空画布。如果开发者需要向<canvas.../>上绘制图形则必须使用JavaScript脚本进行绘制。

为了向<canvas.../>元素上绘图,必须经过如下3步。

获取<canvas.../>元素对应的DOM对象,这是一个Canvas对象。
调用Canvas对象的getContext()方法,该方法返回一个CanvasRenderingContext2D对象,该对象即可绘制图形。
调用CanvasRenderingContext2D对象的方法绘图。
绘制几何图形:
CanvasRenderingContext2D只提供了两个方法来绘制几何图形:

fillRect(double x,double y,double width,double height):填充一个矩形区域。
strokeRect(double x,double y,double width,double height):绘制一个矩形边框。
注:此处的(x,y)坐标相对于画布左上角顶点定位,左上角顶点默认坐标为(0,0),x轴向右为正方向,y轴向下为正方向。

下面程序使用这两个方法来绘制几个简单的矩形:

绘制矩形

绘制矩形

效果图:

使用路径绘制圆角矩形:
正如前面所提,CanvasRenderingContext2D对象只提供了两个绘制矩形的方法,并没有直接提供绘制图形,椭圆等几何图形的方法,为了在Canvas上绘制更复杂的图形,必须在Canvas上启用路径,借助于路径来绘制图形。

在Canvas上使用路径,可按如下步骤进行:

         beginPath():丢弃任何当前定义的路径并且开始一条新的路径。它把当前的点设置为 (0,0)。  

         closePath() :方法创建从当前点到开始点的路径。 

调用CanvasRenderingContext2D对象的beginPath()方法开始定义路径。
调用CanvasRenderingContext2D的各种方法添加子路径。
调用CanvasRenderingContext2D的closePath()方法关闭路径。
调用CanvasRenderingContext2D的fill()或stroke()方法来填充路径或绘制路径边框。
我们接下来调用调用CanvasRenderingContext2D提供的几个方法来绘制一个圆角矩形:

  arcTo(double x1,double y1,double x2,double y2,double radius):向Canvas的当前路径上添加一段弧,确定这段弧的方式是:假设从当前点到P1(x1,y1)绘制一条线条,再从P1(x1,y1)到P2(x2,y2)绘制一条线条,arcTo则绘制一段同时与上面两条线条相切,且半径为radius的圆弧。
lineTo(double x,double y):把Canvas的当前路径从当前结束点连接到x,y对应的点。
moveTo(double x,double y):把Canvas的当前路径的结束点移动到x,y对应的点。

arcTo示意

arcTo示意

效果图:
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Python进阶者 Python进阶者
2年前
手把手教你使用CanvasAPI打造一款拼图游戏
一、canvas简介1.canvas是HTML5提供的一种新标签,双标签;2.HTML5 canvas标签元素用于图形的绘制,通过脚本(通常是JavaScript)来完成;3.canvas标签只是图形容器,必须使用脚本来绘制图形;Canvas是一个矩形区域的画布,可以用JavaScript在上面绘画;二、案例目标我们今天的目标是使用HTML5
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Python进阶者 Python进阶者
2年前
Canvas之鼠标滑动特效
大家好,我是皮皮。我们会看到很多网页的粒子特效;如上图所示,这些都是借助HTML新特性,使用新增标签Canvas得到的效果;那么我们来了解下canvas。什么是Canvas在MDN中是这样定义  的: 是HTML5新增的元素,可用于通过使用JavaScript中的脚本来绘制图形。例如,它可以用于绘制图形、制作照片、创建动画,甚至可以进行实时
Stella981 Stella981
3年前
HTML5 & CSS3 初学者指南(4) – Canvas使用
介绍传统的HTML主要用于文本的创建,可以通过<img标签插入图像,动画的实现则需要第三方插件。在这方面,传统的HTML极其缺乏满足现代网页多媒体需求的能力。HTML5的到来,带来了新的成员<canvas标签。什么是Canvas?HTML5的Canvas 元素使用JavaScript在网页上绘制图像。
Stella981 Stella981
3年前
HTML5中Canvas元素的使用总结
HTML5中Canvas元素的使用总结  Canvas提供了开发者自定义绘图的接口,我们可以公国getContext()函数来获取绘图上下文进行绘制操作,这个函数中可以传入两个参数,其中第1个参数设置绘图上下文的类型,比较常用的是"2d",我们也可以使用"webgl"来使用webOpenGL实现3D绘制。本篇博
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这