Canvas 基本绘制(上)

HTML5学堂:之前的文章与大家分享了SVG的一系列操作,但是SVG也是存在一些劣势,所以今天开始为大家分享介绍HTML5 Canvas的相关知识,Canvas是什么呢?又如何进行Canvas进行图像的绘制呢?在Canvas当中有哪些绘制图形的方法?来看看下面的文章吧。

Canvas与SVG的比较

Canvas的基本知识 - 什么是Canvas

canvas标记由Apple在Safari 1.3 Web 浏览器中引入

canvas是HTML5新增的一个标签,它的主要作用是画矢量图;

canvas的API接口提供给了JavaScript;

Canvas的基本知识 - 使用Canvas能够做什么

canvas能做动画,但不是为动画而生,能做游戏,能做特别炫的效果,主要是为画图而生。

canvas元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务。

Canvas的基本知识 - getContext对象

getContext()方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。参数为2d,目前只有2d的合法

注意:canvas有默认宽高,如果使用css设置Canvas画布的大小,则导致画布按比例缩放到你设置的值,所以canvas画布宽高的设置需要在标签中,使用属性的设置方法进行设置。

Canvas设置大小测试实例

<!doctype html>
<html>
<head>
 <meta charset="UTF-8">
 <title>HTML5学堂</title>
 <link rel="stylesheet" href="../css/reset.css">
 <script src="../js/jquery-1.8.3.min.js" charset="utf-8" type="text/javascript"></script>
 <style>
  .can-one {
   border: 1px solid #999;
  }
  .can-two {
   width: 200px;
   height: 100px;
   border: 1px solid #999;
  }
 </style>
</head>
<body>
 <canvas id="testCanvasOne" width="400" height="200" class="can-one"></canvas>
 <canvas id="testCanvasTwo"  width="400" height="200" class="can-two"></canvas>
 <canvas id="testCanvasThree" width="200" height="100" class="can-one"></canvas>
 <script>
  var testCanvasOne = $("#testCanvasOne")[0];
  var contextOne = testCanvasOne.getContext("2d");
   contextOne.beginPath();
   contextOne.rect(180, 80, 40, 40);
   contextOne.stroke();
   contextOne.closePath();
 
  var testCanvasTwo = $("#testCanvasTwo")[0];
  var contextTwo = testCanvasTwo.getContext("2d");
   contextTwo.beginPath();
   contextTwo.rect(180, 80, 40, 40);
   contextTwo.stroke();
   contextTwo.closePath();
 
  var testCanvasThree = $("#testCanvasThree")[0];
  var contextThree = testCanvasThree.getContext("2d");
   contextThree.beginPath();
   contextThree.rect(180, 80, 40, 40);
   contextThree.stroke();
   contextThree.closePath();
 </script>
</body>
</html>

代码效果图:

路径

路径通常指存在于多种计算机图形设计软件中的以贝塞尔曲线为理论基础的区域绘制方式。绘制时产生的线条称为路径。 路径由一个或多个直线段或曲线段组成。 线段的起始点和结束点由锚点标记,就像用于固定线的针。 通过编辑路径的锚点,您可以改变路径的形状。 您可以通过拖动方向线末尾类似锚点的方向点来控制曲线。路径可以是开放的,也可以是闭合的。 对于开放路径,路径的起始锚点称为端点。

Canvas基本方法

开始与闭合路径

beginPath( )、closePath( )

移动画笔与画线

moveTo(x, y)、lineTo(x, y)

描绘路径与填充路径

stroke( )、fill( )

文本绘制方法

strokeText(text, x, y, maxWidth):绘制文字轮廓

fillText(text, x, y, maxWidth):填充文字text即是要写入的文字,x、y为文字起始位置的坐标,maxWidth为文字的宽度,能够防止文字太宽而溢出,浏览器会缩减文字以适应宽度

Canvas基本方法操作实例

<!doctype html>
<html>
<head>
 <meta charset="UTF-8">
 <title>HTML5学堂</title>
 <link rel="stylesheet" href="../css/reset.css">
 <style>
  .draw {
   border: 1px solid red;
  }
 </style>
</head>
<body>
 <canvas id="testCanvas" width="300" height="150" class="draw"></canvas>
 <script>
  var testCanvas = document.getElementById("testCanvas");
  // 获取getContext()对象
  var context = testCanvas.getContext("2d");
 
  // 开始路径
  context.beginPath();
  // 移动画笔
  context.moveTo(20, 20);
  // 画线
  context.lineTo(280, 20);
  context.lineTo(280, 130);
  context.lineTo(20, 130);
  context.lineTo(20, 20);
  // 绘制路径
  context.stroke();
  // 填充路径
  // context.fill();
  // 关闭路径
  context.closePath();
 
 </script>
</body>
</html>

代码效果图:

学完了,来点作业吧~

利用该文章讲解的canvas知识点来完成下图。

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2015-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

1590: [Usaco2008 Dec]Secret Message 秘密信息

1590: [Usaco2008 Dec]Secret Message 秘密信息 Time Limit: 5 Sec  Memory Limit: 32 MB ...

3276
来自专栏IT 指南者专栏

Python OJ 从入门到入门基础练习 10 题

OJ 是 Online Judge 系统的简称,用来在线检测程序源代码的正确性 1、天天向上的力量: 一年365天,以第1天的能力值为基数,记为1.0。当好好学...

27911
来自专栏Java 源码分析

markdown语法

Markdown 语法说明 (简体中文版) / (点击查看快速入门) 概述 宗旨 兼容 HTML 特殊字符自动转换 区块元素 段落和换行 标题 区块引用 列表 ...

2684
来自专栏腾讯IVWEB团队的专栏

SVG 动画精髓(下)

线条动画 SVG 中的线条动画常常用作过渡屏(splash screen)中。例如:一些比较炫酷的 LOGO 和 炫酷的效果,大家有没有动心想学一学,看看自己到...

2150
来自专栏柠檬先生

NEC html规范

HTML规范 - 整体结构 HTML基础设施 文件应以“<!DOCTYPE ......>”首行顶格开始,推荐使用“<!DOCTYPE html>”。 必须申明...

1955
来自专栏程序员互动联盟

【答疑释惑】ascii码及转义字符的含义

我们在c/c++学习开发中经常用到它,小伙伴们你们都知道那些,是不是用到的时候着急或者不知道,为什么判断字符串结尾是'\0'呢?   我们就讲讲列列ascii...

2985
来自专栏菩提树下的杨过

Flash/Flex学习笔记(23):运动学原理

先写一个公用的小球类Ball: package{ import flash.display.Sprite; //小球 类 public class B...

22110
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2.4 HTML5 Canvas绘图基础

Canvas是HTML标准近年发展到HTML5时添加的新特性,用于在网页上高效绘图。H5 canvas绘图,与MFC(Microsoft Foundation ...

812
来自专栏FreeBuf

CTF小技巧:文本解密工具 Text Decoder Toolkit

欢迎来到文本解码挑战赛! T{4 G=C 9<=E B63 3<3;G /<2 9<=E G=C@A3:4^ G=C <332 <=B 43/@ B63 @3A...

20810
来自专栏前端布道

Markdown - 让网络书写变得简单

可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdo...

702

扫描关注云+社区