下面我们来看下在canvas上绘制图像的另一种方式——变换(translate函数的应用):

下面的代码:我们还是实现上篇文章的效果:画一条斜线。理论上的知识,自己买书去看吧!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>转换</title><style type="text/css">#diagonal{border: 1px solid red;width: 200px;height: 200px;}</style><script type="text/javascript">function drawDiagonal() {//取得canvas元素及其绘图上下文var canvas = document.getElementById("diagonal");var context = canvas.getContext("2d");//保存当前绘画状态,以便我们画完这副画以后,再恢复到这个状态,画另一副画。            context.save();//向右下方移动绘图上下文            context.translate(70, 140);//以原点为起点,绘制与前面相同的线段            context.beginPath();context.moveTo(0, 0);context.lineTo(70, -70);//将这条线绘制到canvas画布上去。
            context.stroke();//恢复原有的绘图状态            context.restore();//可以开始另外一副绘图。。。。。。        }window.addEventListener("load", drawDiagonal, true);</script>
</head>
<body>
<canvas id="diagonal"></canvas>
</body>
</html>

(请注意加红色背景的字)
1、首先通过ID找到并访问canvas对象。

2、接着通过调用canvas对象的getContext函数获取上下文对象。

3、接下来,保存尚未修改的context对象,这样我们即使通过moveTo、lineTo、translate等操作后,我们还是可以恢复到这个状态,然后开始绘画另一个副图,或者另外一些操作。

4、下一步是在context中调用translate函数。通过这个操作,当进行平移行为(moveTo)发生时,我们的提供的变换坐标{translate(70,140)}会被加到结果坐标{moveTo(0,0)}上去,结果移动到了坐标点(70,140){即横向:70,纵向:140}(我们暂时称坐标A吧)上面了。

5、上一步完成后,我们调用lineTo(70,-70),意思是在上一个坐标点(70,140)上横向加70(70+70=140),纵向减70(140-70=70),于是我们得一点(140,70)(我们暂时称为坐标B吧),得到两个坐标点后,lineTo方法告诉我们用一条直线把A、B这两个坐标点连起来。

其它上篇已介绍过,就不多说了。如果觉得我理解错了,希望你能帮我指出来。在这里我还要向 artwl 表示感谢,他对我上某篇文章写的不好处的赐教。真心希望大家能赐教。。。。

转载于:https://www.cnblogs.com/koeltp/archive/2012/09/29/2707913.html

HTML5 Canvas API 变换(translate函数)相关推荐

  1. java canvas 缩放图片_详解如何用HTML5 Canvas API控制图片的缩放变换

    摘要:这篇HTML5栏目下的"详解如何用HTML5 Canvas API控制图片的缩放变换",介绍的技术点是"html5_canvas.canvas.Html5.控制图片 ...

  2. 应用html5画布Apicss制作,程序设计HTML5 Canvas API

    复制代码 代码如下: try { document.createElement("Canvas").getContext("2d"); document.get ...

  3. html5 Canvas API

    2.1 Canvas 概述 Canvas本质上是一个位图画布,其上绘制的图形是不可缩放的,不能像SVG图像那样可以被放大缩小.此外,用Canvas绘制出来的对象不属于页面DOM结构或者任何命名空间. ...

  4. 用html做个猜字游戏,HTML5 Canvas API制作简单的猜字游戏

    这篇文章主要介绍了借助HTML5 Canvas API制作一个简单的猜字游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下 二话不说,先上效果图以及源代 ...

  5. html绘制圆形和弧形的代码,通过HTML5 Canvas API绘制弧线和圆形的教程

    在html5中,CanvasRenderingContext2D对象也提供了专门用于绘制圆形或弧线的方法,请参考以下属性和方法介绍: JavaScript Code复制内容到剪贴板 arc(x, y, ...

  6. html5显示字母的值,使用HTML5 Canvas API控制字体的显示与渲染的方法

    今天我们开始征战一个全新的内容--HTML5 Canvas的文本API!要知道,艺术家通常同时也是一个书法家,所以我们要学习写字,而且是写出漂亮的字.是不是很有意思? 好了,先预告一下Canvas 文 ...

  7. html5 canvas api w3c官方中文,HTML5 Canvas 简介

    一.使用 Canvas 绘制路径 moveTo(x,y) 定义线条开始坐标 lineTo(x,y) 定义线条结束坐标 使用 stroke() 方法来绘制线条 通过指定从何处开始,在何处结束,来绘制一条 ...

  8. clear html5代码,用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能

    在现实世界中,我们使用画笔在画板上进行绘画:在html5 canvas中,我们同样可以使用canvas的画笔--CanvasRenderingContext2D对象在canvas上进行绘画.众所周知, ...

  9. html如何中心缩放图片,详解如何用HTML5 Canvas API控制图片的缩放变换

    缩放变换scale(sx,sy)传入两个参数,分别是水平方向和垂直方向上对象的缩放倍数.例如context.scale(2,2)就是对图像放大两倍.其实,看上去简单,实际用起来还是有一些问题的.我们来 ...

最新文章

  1. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
  2. Java项目:前台+后台精品图书管理系统(java+SSM+jsp+mysql+maven)
  3. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )
  4. Oracle11g数据库在win7系统上的安装教程
  5. C++11:继承构造函数
  6. 前端学习(1271):async/await处理多个异步请求
  7. 【IPC通信】匿名管道
  8. java中的10的算法,Java中10个常用的排序算法
  9. BZOJ2243: [SDOI2011]染色
  10. mysql+8.0+新特性_MySQL 8.0备受瞩目的新特性大放送!
  11. 图像预处理第4步:去离散杂点噪声
  12. Codeforces Round # 555 (Div. 3) C2. Increasing subsequence (complicated version) (贪心)
  13. 过滤器和拦截器的区别
  14. Excel2013使用插入特殊符号或复选框功能制作带对号的打钩方框
  15. 微信h5图表组件制作教程
  16. 机器学习---sklearn
  17. python中pygame背景颜色为啥没生效_如何更改pygame中的背景图像?
  18. Java 泛型类、泛型方法和泛型接口
  19. 计算机网络里不显示共享打印机驱动,win10连接共享打印机时“找不到驱动程序”怎么回事...
  20. 网页游戏排行榜2010前十名

热门文章

  1. TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
  2. leetcode算法题--增量元素之间的最大差值
  3. OVS 端口抽象层次(四十)
  4. linux虚拟网络设备之veth(二)
  5. iview中的Col在vue/html-self-closing中识别错误
  6. 2019全新学习路线图发布
  7. 你真的了解WebSocket吗?
  8. 英特尔CPU控制机制存在隐秘开关 可被黑客利用成为后门
  9. 在URL地址栏中显示ico
  10. 大数据多属性的数据架构设计