成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTML 5深入淺出教學篇之十

開發 前端
本文講要的講的是HTML 5畫布(canvas)之轉換:平移|translate();旋轉|rotate();縮放|scale();矩陣轉換|transform(a, b, c, d, e, f)

介紹

HTML 5: 畫布(canvas)之轉換(轉換畫布的用戶坐標系)

平移 | translate()

旋轉 | rotate()

縮放 | scale()

矩陣轉換 | transform(a, b, c, d, e, f)

矩陣轉換 | setTransform(a, b, c, d, e, f)

示例

1、平移 | translate()
canvas/transform/translate.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <title>平移</title> 
  5. </head> 
  6. <body> 
  7.     <canvas id="canvas" width="400" height="400" style="background-color: rgb(222, 222, 222)"> 
  8.         您的瀏覽器不支持 canvas 標簽  
  9.     </canvas> 
  10.     <br /> 
  11.     <button type="button" onclick="drawIt();">不斷地點我看 Demo</button> 
  12.     <button type="button" onclick="clearIt();">清除畫布</button> 
  13.     <script type="text/javascript"> 
  14.         var ctx = document.getElementById('canvas').getContext('2d');  
  15.         var canvasX = 0;  
  16.         var canvasY = 0;  
  17.         var stepX = 20;  
  18.         var stepY = 20;  
  19.         function drawIt() {  
  20.             if (canvasX == 0 && canvasY == 0)  
  21.                 ctx.strokeRect(0, 0, 100, 100);  
  22.             canvasX += stepX;  
  23.             canvasY += stepY;  
  24.             /*  
  25.              * context.translate(x, y) - 將當前的用戶坐標系平移指定的距離  
  26.              *   x - x 軸方向上需要平移的像素數  
  27.              *   y - y 軸方向上需要平移的像素數  
  28.              */  
  29.             ctx.strokeStyle = "blue";  
  30.             ctx.translate(stepX, stepY);  
  31.             ctx.strokeRect(0, 0, 100, 100);  
  32.         }  
  33.         function clearIt() {  
  34.             ctx.translate(-canvasX, -canvasY);  
  35.             canvasX = 0;  
  36.             canvasY = 0;  
  37.             ctx.strokeStyle = "black";  
  38.             ctx.clearRect(0, 0, 400, 400);  
  39.         }  
  40.     </script> 
  41. </body> 
  42. </html> 

2、旋轉 | rotate()
canvas/transform/rotate.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <title>旋轉</title> 
  5. </head> 
  6. <body> 
  7.     <canvas id="canvas" width="400" height="400" style="background-color: rgb(222, 222, 222)"> 
  8.         您的瀏覽器不支持 canvas 標簽  
  9.     </canvas> 
  10.     <br /> 
  11.     <button type="button" onclick="drawIt();">不斷地點我看 Demo</button> 
  12.     <button type="button" onclick="clearIt();">清除畫布</button> 
  13.     <script type="text/javascript"> 
  14.         var ctx = document.getElementById('canvas').getContext('2d');  
  15.         var canvasRadian = 0;  
  16.         var stepRadian = 15 * Math.PI / 180;  
  17.         function drawIt() {  
  18.             if (canvasRadian == 0)  
  19.                 ctx.strokeRect(360, 0, 20, 60);  
  20.             canvasRadian += stepRadian;  
  21.             /*  
  22.              * context.rotate(radian) - 將當前的用戶坐標系旋轉指定的弧度,順時針為正值,逆時針為負值  
  23.              *   radian - 弧度值  
  24.              */  
  25.             ctx.strokeStyle = "blue";  
  26.             ctx.rotate(stepRadian);  
  27.             ctx.strokeRect(360, 0, 20, 60);  
  28.         }  
  29.         function clearIt() {  
  30.             ctx.rotate(-canvasRadian);  
  31.             canvasRadian = 0;  
  32.             ctx.strokeStyle = "black";  
  33.             ctx.clearRect(0, 0, 400, 400);  
  34.         }  
  35.     </script> 
  36. </body> 
  37. </html> 

3、縮放 | scale()
canvas/transform/scale.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <title>縮放</title> 
  5. </head> 
  6. <body> 
  7.     <canvas id="canvas" width="400" height="400" style="background-color: rgb(222, 222, 222)"> 
  8.         您的瀏覽器不支持 canvas 標簽  
  9.     </canvas> 
  10.     <br /> 
  11.     <button type="button" onclick="drawIt();">不斷地點我看 Demo</button> 
  12.     <button type="button" onclick="clearIt();">清除畫布</button> 
  13.     <script type="text/javascript"> 
  14.         var ctx = document.getElementById('canvas').getContext('2d');  
  15.         var canvasScaleX = 1;  
  16.         var canvasScaleY = 1;  
  17.         var stepScaleX = 1.1;  
  18.         var stepScaleY = 1.1;  
  19.         function drawIt() {  
  20.             if (canvasScaleX == 1 && canvasScaleY == 1)  
  21.                 ctx.strokeRect(0, 0, 60, 60);  
  22.             canvasScaleX *= stepScaleX;  
  23.             canvasScaleY *= stepScaleY;  
  24.             /*  
  25.              * context.scale(x, y) - 將當前的用戶坐標系縮放指定的倍數  
  26.              *   x - 水平方向上的縮放倍數  
  27.              *   y - 垂直方向上的縮放倍數  
  28.              */  
  29.             ctx.strokeStyle = "blue";  
  30.             ctx.scale(stepScaleX, stepScaleY);  
  31.             ctx.strokeRect(0, 0, 60, 60);  
  32.         }  
  33.         function clearIt() {  
  34.             ctx.scale(1 / canvasScaleX, 1 / canvasScaleY);  
  35.             canvasScaleX = 1;  
  36.             canvasScaleY = 1;  
  37.             ctx.strokeStyle = "black";  
  38.             ctx.clearRect(0, 0, 400, 400);  
  39.         }  
  40.     </script> 
  41. </body> 
  42. </html> 

#p#

4、矩陣轉換 | transform(a, b, c, d, e, f)
canvas/transform/transform.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <title>矩陣轉換 | transform(a, b, c, d, e, f)</title> 
  5. </head> 
  6. <body> 
  7.     <canvas id="canvas" width="400" height="400" style="background-color: rgb(222, 222, 222)"> 
  8.         您的瀏覽器不支持 canvas 標簽  
  9.     </canvas> 
  10.     <br /> 
  11.     <button type="button" onclick="drawIt();">不斷地點我看 Demo</button> 
  12.     <button type="button" onclick="clearIt();">清除畫布</button> 
  13.     <script type="text/javascript"> 
  14.         var ctx = document.getElementById('canvas').getContext('2d');  
  15.         var canvasScaleX = 1;  
  16.         var canvasScaleY = 1;  
  17.         var stepScaleX = 1.1;  
  18.         var stepScaleY = 1.1;  
  19.         function drawIt() {  
  20.             if (canvasScaleX == 1 && canvasScaleY == 1)  
  21.                 ctx.strokeRect(0, 0, 60, 60);  
  22.             canvasScaleX *= stepScaleX;  
  23.             canvasScaleY *= stepScaleY;  
  24.             /*  
  25.              * context.transform(a, b, c, d, e, f) - 按指定的矩陣轉換當前的用戶坐標系  
  26.              *   相當于:context.transform(M11, M12, M21, M22, OffsetX, OffsetY)  
  27.              *  
  28.              * 關于仿射矩陣參考:http://www.cnblogs.com/webabcd/archive/2008/11/03/1325150.html  
  29.              *  
  30.              *   |X|             |M11(默認值 1)      M21(默認值 0)       0|  
  31.              *   |Y| = |x y 1| * |M12(默認值 0)      M22(默認值 1)       0|  
  32.              *   |1|             |OffsetX(默認值 0)  OffsetY(默認值 0)   1|  
  33.              *  
  34.              *   X = x * M11 + y * M12 + OffsetX  
  35.              *   Y = x * M21 + y * M22 + OffsetY  
  36.              */  
  37.             ctx.strokeStyle = "blue";  
  38.             ctx.transform(stepScaleX, 0, 0, stepScaleY, 0, 0);  
  39.             ctx.strokeRect(0, 0, 60, 60);  
  40.         }  
  41.         function clearIt() {  
  42.             ctx.transform(1 / canvasScaleX, 0, 0, 1 / canvasScaleY, 0, 0);  
  43.             canvasScaleX = 1;  
  44.             canvasScaleY = 1;  
  45.             ctx.strokeStyle = "black";  
  46.             ctx.clearRect(0, 0, 400, 400);  
  47.         }  
  48.     </script> 
  49. </body> 
  50. </html> 

5、矩陣轉換 | setTransform(a, b, c, d, e, f)
canvas/transform/setTransform.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.     <title>矩陣轉換 | setTransform(a, b, c, d, e, f)</title> 
  5. </head> 
  6. <body> 
  7.     <canvas id="canvas" width="400" height="400" style="background-color: rgb(222, 222, 222)"> 
  8.         您的瀏覽器不支持 canvas 標簽  
  9.     </canvas> 
  10.     <br /> 
  11.     <button type="button" onclick="drawIt();">Demo</button> 
  12.     <button type="button" onclick="clearIt();">清除畫布</button> 
  13.     <script type="text/javascript"> 
  14.         var ctx = document.getElementById('canvas').getContext('2d');  
  15.         function drawIt() {  
  16.             ctx.strokeStyle = "red";  
  17.             ctx.scale(2, 2);  
  18.             ctx.strokeRect(0, 0, 60, 60);  
  19.             /*  
  20.              * context.setTransform(a, b, c, d, e, f) - 首先重置用戶坐標系,然后再按指定的矩陣轉換用戶坐標系(translate, rotate, scale, transform 是針對當前用戶坐標系做轉換,而 setTransform 是針對重置后的用戶坐標系做轉換)  
  21.              *   相當于:context.setTransform(M11, M12, M21, M22, OffsetX, OffsetY)  
  22.              *  
  23.              * 關于仿射矩陣參考:http://www.cnblogs.com/webabcd/archive/2008/11/03/1325150.html  
  24.              *  
  25.              *   |X|             |M11(默認值 1)      M21(默認值 0)       0|  
  26.              *   |Y| = |x y 1| * |M12(默認值 0)      M22(默認值 1)       0|  
  27.              *   |1|             |OffsetX(默認值 0)  OffsetY(默認值 0)   1|  
  28.              *  
  29.              *   X = x * M11 + y * M12 + OffsetX  
  30.              *   Y = x * M21 + y * M22 + OffsetY  
  31.              */  
  32.             ctx.strokeStyle = "blue";  
  33.             ctx.setTransform(1, 0, 0, 1, 0, 0);  
  34.             ctx.strokeRect(0, 0, 60, 60);  
  35.         }  
  36.         function clearIt() {  
  37.             ctx.clearRect(0, 0, 400, 400);  
  38.         }  
  39.     </script> 
  40. </body> 
  41. </html> 

[源碼下載]

原文鏈接:http://www.cnblogs.com/webabcd/archive/2012/02/22/2362505.html

 

責任編輯:張偉 來源: webabcd的博客
相關推薦

2012-05-30 13:26:12

HTML5

2012-05-30 13:49:52

HTML5

2012-05-30 14:51:09

HTML5

2012-05-31 09:19:22

HTML5

2012-05-31 10:57:06

HTML5

2012-05-31 09:35:43

HTML5

2012-05-30 15:17:54

HTML5

2012-05-30 11:11:42

HTML5

2012-05-30 13:17:46

HTML5

2012-05-30 10:52:09

HTML5

2009-11-18 13:30:37

Oracle Sequ

2009-11-17 17:31:58

Oracle COMM

2022-02-25 08:54:50

setState異步React

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2013-11-14 15:53:53

AndroidAudioAudioFlinge

2017-06-06 15:34:41

物聯網數據庫壓縮

2017-06-05 14:50:33

大數據數據庫壓縮

2021-07-20 15:20:02

FlatBuffers阿里云Java

2019-01-07 15:29:07

HadoopYarn架構調度器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频一区二区 | 成人亚洲综合 | 精品二区| 国产午夜精品久久 | 亚洲午夜视频在线观看 | 亚洲免费在线观看 | 国产一区久久久 | 国产精品久久久久影院色老大 | 日韩免费视频一区二区 | 国产精品日日摸夜夜添夜夜av | 国产你懂的在线观看 | 夏同学福利网 | 午夜手机在线视频 | 91精品国产综合久久久久久蜜臀 | 亚洲成av人片在线观看无码 | 久免费视频 | 亚洲天堂中文字幕 | 日韩欧美二区 | 欧美精品在线一区二区三区 | 成人亚洲精品久久久久软件 | 中国大陆高清aⅴ毛片 | 久久美女视频 | 亚洲不卡在线观看 | 97人人澡人人爽91综合色 | 午夜国产精品视频 | 亚洲精品电影网在线观看 | 国产精品一区二区三区四区 | 国产精品成人一区 | 久久国产精品一区二区三区 | www.男人天堂.com | 日韩一级不卡 | 91精品国产综合久久久动漫日韩 | 在线免费毛片 | 国产精品久久久 | 国产精品久久国产精品 | 在线看av网址 | 黄网免费 | 视频精品一区 | 特级特黄特色的免费大片 | 欧美日韩中文字幕在线 | 国产精品二区三区在线观看 |