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

为了向元素上绘图,必须经过如下3步。

获取元素对应的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轴向下为正方向。

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

绘制矩形

绘制矩形

style="border:1px solid black">

// 获取canvas元素对应的DOM对象

var canvas = document.getElementById('mc');

// 获取在canvas上绘图的CanvasRenderingContext2D对象

var ctx = canvas.getContext('2d');

// 设置填充颜色

ctx.fillStyle = '#f00';

// 填充一个矩形

ctx.fillRect(30 , 20 , 120 , 60);

// 设置线条颜色

ctx.strokeStyle = "#00f";

// 设置线条宽度

ctx.lineWidth = 10;

// 绘制一个矩形边框

ctx.strokeRect(30 , 130 , 120 , 60);

// 设置线条颜色

ctx.strokeStyle = "#0ff";

// 设置线条连接风格

ctx.lineJoin = "round";

// 绘制一个矩形边框

ctx.strokeRect(80 , 160 , 120 , 60);

// 设置线条颜色

ctx.strokeStyle = "#f0f";

// 设置线条连接风格

ctx.lineJoin = "bevel";

// 绘制一个矩形边框

ctx.strokeRect(130 , 190 , 120 , 60);

效果图:

使用路径绘制圆角矩形:

正如前面所提,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示意

style="border:1px solid black">

/*

该方法负责绘制圆角矩形

x1、y2:是圆角矩形左上角的坐标。

width、height:控制圆角举行的宽、高

radius:控制圆角矩形的四个圆角的半径

*/

function createRoundRect(ctx , x1 , y1 , width , height , radius)

{

ctx.beginPath();

// 移动到左上角

ctx.moveTo(x1 + radius , y1);

// 添加一条连接到右上角的线段

ctx.lineTo(x1 + width - radius, y1);

// 添加一段圆弧

ctx.arcTo(x1 + width , y1, x1 + width, y1 + radius, radius);

// 添加一条连接到右下角的线段

ctx.lineTo(x1 + width, y1 + height - radius);

// 添加一段圆弧

ctx.arcTo(x1 + width, y1 + height , x1 + width - radius

, y1 + height , radius);

// 添加一条连接到左下角的线段

ctx.lineTo(x1 + radius, y1 + height);

// 添加一段圆弧

ctx.arcTo(x1, y1 + height , x1 , y1 + height - radius , radius);

// 添加一条连接到左上角的线段

ctx.lineTo(x1 , y1 + radius);

// 添加一段圆弧

ctx.arcTo(x1 , y1 , x1 + radius , y1 , radius);

ctx.closePath();

}

// 获取canvas元素对应的DOM对象

var canvas = document.getElementById('mc');

// 获取在canvas上绘图的CanvasRenderingContext2D对象

var ctx = canvas.getContext('2d');

ctx.lineWidth = 3;

createRoundRect(ctx , 30 , 30 , 200 , 100 , 20);

ctx.stroke();

效果图:

HTML5绘制几何图形

学习笔记:HTML5 Canvas绘制简单图形

HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作.

使用 HTML5 Canvas 绘制出惊艳的水滴效果

HTML5 在不久前正式成为推荐标准,标志着全新的 Web 时代已经来临.在众多 HTML5 特性中,Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作 ...

使用html5 canvas绘制图片

注意:本文属于系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

使用html5 canvas绘制圆形或弧线

注意:本文属于系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

html5 Canvas绘制图形入门详解

html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...

【项目1-1】使用HTML5+CSS3绘制HTML5的logo

作为一个WEB小萌新,自学了有一段时间,总是感觉停滞不前.最近反思中,想到前贤一句话:书读百遍其义自见.说到底,还是项目做的少,如果做多了,想必自然会得心应手. 利用HTML5+CSS3绘制HTML5 ...

HTML5图形绘制

要在HTML5中绘制图形,首先要放置一个canvas元素

html中几何图形代码,HTML5实现绘制几何图形相关推荐

  1. 谷歌图标html5代码,HTML5 canvas绘制chrome浏览器 logo图标_网页代码站(www.webdm.cn)

    HTML5 canvas绘制chrome图标 使用canvas绘制chrome logo $ele:null, ele:null, context:null } $(function(){ oCanv ...

  2. mesh渲染到ui_在Unity中使用UGUI修改Mesh绘制几何图形

    Used by Text, Image, and RawImage for example to generate vertices specific to their use case. 说的是当该 ...

  3. html 画圆点代码,HTML5 Canvas绘制圆点虚线实例

    HTML5 Canvas 提供了很多图形绘制的函数,但是很可惜,Canvas API只提供了画实线的函数(lineTo),却并未提供画虚线的方法.这样的设计有时会带来很大的不便,<JavaScr ...

  4. html玫瑰花效果代码,HTML5 canvas绘制的玫瑰花效果

    有人用html就写了一朵漂亮的玫瑰,是不是有点太骚气了.纯javascipt就弄出了玫瑰花,再次显示了HTML5的威力 警告:传说IE6内核是无法看到的,建议用Chrome或者Firefox. 玫瑰花 ...

  5. 用html制作双色球代码,Html5 canvas 绘制彩票走势图

    因需要 要实现一个类似彩票走势图的功能,初次学Html5 ,很多地方不明白,前段时间也发帖请教过这个问题,也是没给个明确说话,在网上搜了很多,也没有实现的例子,今天仔细研究了下,发现其实也不是很难,现 ...

  6. html5 绘制图形,HTML5绘制几何图形

    绘制几何图形 var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext(" ...

  7. HTML阅读打开点击不了,如何让网页文章中的代码可以点击运行

    在网页中运行代码 HTML5学堂:很多代码网站当中,都会提供运行代码段功能,便于查看代码效果,那么这个是如何实现的呢?一起来看一下--如何在网页中运行代码. HTML5学堂-刘国利said:应该是在2 ...

  8. HTML1个像素宽的代码,HTML5 Canvas中绘制一个像素宽的细线实现代码详情

    正统的HTML5 Canvas中如下代码ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(10, 100); ctx.lineTo(300,100); ct ...

  9. html5画椭圆的完整代码,HTML5 Canvas中绘制椭圆的4种方法

    概述 HTML5中的Canvas并没有直接提供绘制椭圆的方法,下面是对几种绘制方法的总结.各种方法各有优缺,视情况选用.各方法的参数相同: 1.context为Canvas的2D绘图环境对象, 2.x ...

  10. 百度地图js版api绘制几何图形覆盖物并保存数据库

    百度地图js版api绘制几何图形覆盖物并保存数据库 你好!相信你看到这边文章的时候,我的方案,已经满足了你的需求: 1,在html5上调用web版百度地图api,绘制多边形,我项目的是绘制小区. 2, ...

最新文章

  1. UIUC翟成祥教授:用文本透镜拓展人类智能
  2. L2-006. 树的遍历(不建树)
  3. 定义一个包含增强方法的javaBean(最终增强)
  4. 把windows窗口编程浅绿色的方法
  5. 因子分析——python
  6. 修改项目名称之后,访问不到项目的问题
  7. centos 卸载python和yum之后的解决办法
  8. Android Spinnert的使用
  9. 诗与远方:无题(二十六)- 曾经给一个妹子写的一首诗
  10. 【英语学习】【Level 08】U05 Better option L5 A picture is worth a thousand words
  11. MySQL48道经典基础面试题(包含各个方面)
  12. js rsa验签_【HAVENT原创】前端使用 jsrsasign 进行 RSA 加密、解密、签名、验签
  13. python h5游戏_记一次游戏H5开发经验
  14. HTML制作手风琴效果,Dreamweaver制作手风琴图片展示效果(附代码)
  15. Linux 之管道通信
  16. php怎么使用sendcloud,高级功能 - SendCloud 文档中心 - SendCloud 文档中心
  17. Win10 1809版本多用户远程登陆
  18. 【pytorch EarlyStopping】深度学习之早停法入门·相信我,一篇就够。
  19. 购买完域名之后能干什么事儿?
  20. 关于云ERP系统的错误看法

热门文章

  1. 如何查询HP-UX主机防火墙状态
  2. 牛牛卡牌游戏 javascript
  3. pageHelper.startPage(m,n)的用法
  4. UiAutomator2—By、BySelector
  5. 先天八卦与后天八卦原理及区别
  6. EOS REX 安全系列之从源码开始玩转 REX(一)
  7. TianMao订单数据分析
  8. HTML中怎么将播放器隐藏显示,HTML不显示播放器代码
  9. vue移动端日历显示查看每日详情列表
  10. 力扣第 295 场周赛:6080. 使数组按非递减顺序排列