前端技术分享-码匠 极客编程技术分享

您当前位于:HTML5新技术 ——> Canvas 图像绘制的基本方法(上)

Canvas 图像绘制的基本方法(上)

2015/07/18 15:17:13 | 作者:HTML5学堂(码匠) | 分类:HTML5新技术 | 关键词:Canvas,绘制图像,基本方法

Canvas 基本绘制(上)

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

Canvas与SVG的比较

SVG与Canvas绘制的区别

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设置大小测试实例

  1. <!doctype html>
  2. <html>
  3. <head>
  4.  <meta charset="UTF-8">
  5.  <title>HTML5学堂</title>
  6.  <link rel="stylesheet" href="../css/reset.css">
  7.  <script src="../js/jquery-1.8.3.min.js" charset="utf-8" type="text/javascript"></script>
  8.  <style>
  9.   .can-one {
  10.    border: 1px solid #999;
  11.   }
  12.   .can-two {
  13.    width: 200px;
  14.    height: 100px;
  15.    border: 1px solid #999;
  16.   }
  17.  </style>
  18. </head>
  19. <body>
  20.  <canvas id="testCanvasOne" width="400" height="200" class="can-one"></canvas>
  21.  <canvas id="testCanvasTwo"  width="400" height="200" class="can-two"></canvas>
  22.  <canvas id="testCanvasThree" width="200" height="100" class="can-one"></canvas>
  23.  <script>
  24.   var testCanvasOne = $("#testCanvasOne")[0];
  25.   var contextOne = testCanvasOne.getContext("2d");
  26.    contextOne.beginPath();
  27.    contextOne.rect(180, 80, 40, 40);
  28.    contextOne.stroke();
  29.    contextOne.closePath();
  30.  
  31.   var testCanvasTwo = $("#testCanvasTwo")[0];
  32.   var contextTwo = testCanvasTwo.getContext("2d");
  33.    contextTwo.beginPath();
  34.    contextTwo.rect(180, 80, 40, 40);
  35.    contextTwo.stroke();
  36.    contextTwo.closePath();
  37.  
  38.   var testCanvasThree = $("#testCanvasThree")[0];
  39.   var contextThree = testCanvasThree.getContext("2d");
  40.    contextThree.beginPath();
  41.    contextThree.rect(180, 80, 40, 40);
  42.    contextThree.stroke();
  43.    contextThree.closePath();
  44.  </script>
  45. </body>
  46. </html>

代码效果图:

Canvas设置大小测试案例

欢迎沟通交流~HTML5学堂

路径

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

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基本方法操作实例

  1. <!doctype html>
  2. <html>
  3. <head>
  4.  <meta charset="UTF-8">
  5.  <title>HTML5学堂</title>
  6.  <link rel="stylesheet" href="../css/reset.css">
  7.  <style>
  8.   .draw {
  9.    border: 1px solid red;
  10.   }
  11.  </style>
  12. </head>
  13. <body>
  14.  <canvas id="testCanvas" width="300" height="150" class="draw"></canvas>
  15.  <script>
  16.   var testCanvas = document.getElementById("testCanvas");
  17.   // 获取getContext()对象
  18.   var context = testCanvas.getContext("2d");
  19.  
  20.   // 开始路径
  21.   context.beginPath();
  22.   // 移动画笔
  23.   context.moveTo(20, 20);
  24.   // 画线
  25.   context.lineTo(280, 20);
  26.   context.lineTo(280, 130);
  27.   context.lineTo(20, 130);
  28.   context.lineTo(20, 20);
  29.   // 绘制路径
  30.   context.stroke();
  31.   // 填充路径
  32.   // context.fill();
  33.   // 关闭路径
  34.   context.closePath();
  35.  
  36.  </script>
  37. </body>
  38. </html>

代码效果图:

Canvas基本方法操作实例

学完了,来点作业吧~

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

canvas上

欢迎沟通交流~HTML5学堂

微信公众号,HTML5学堂,码匠,原创文章,WEB前端,技术分享

HTML5学堂

原创前端技术分享

HTML5学堂,HTML5,WEB,前端,视频课程,技术视频,学习视频,面试,JS

原创视频课程

用心打造精品课程

微信小程序,决胜前端,面试题,面试题集合,前端,HTML5,真题

小程序-决胜前端

前端面试题宝库

原创书籍,学习书籍,书籍推荐,HTML5布局之路,HTML5,WEB前端

HTML5布局之路

非传统模式讲解前端