亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 深入解析HTML5 Canvas控制圖形矩陣變換的方法

深入解析HTML5 Canvas控制圖形矩陣變換的方法

熱門標簽:聯(lián)通400電話申請 高德地圖標注賓館位置 電視購物電銷外呼系統(tǒng) 杭州營銷電銷機器人供應商 西寧智能外呼系統(tǒng)加盟 電話機器人如何 飛亞外呼系統(tǒng) 貸款電銷人工和機器人哪個好 百應電銷機器人產(chǎn)業(yè)

在介紹矩陣變換transform()前,我們來說一說什么是變換矩陣。

以上是Canvas中transform()方法所對應的變換矩陣。而此方法正是傳入圖中所示的六個參數(shù),具體為context.transform(a,b,c,d,e,f)。

各參數(shù)意義對應如下表:

參數(shù) 意義
a 水平縮放(1)
b 水平傾斜(0)
c 垂直傾斜(0)
d 垂直縮放(1)
e 水平位移(0)
f 垂直位移(0)

當我們把對應的0或1代入進矩陣,可以發(fā)現(xiàn)這是一個單位矩陣(水平和垂直縮放默認值是1,代表縮放1倍,即不縮放)。該方法使用一個新的變化矩陣與當前變換矩陣進行乘法運算,然后得到各種變化的效果。

這里簡單說一下,當我們想對一個圖形進行變換的時候,只要對變換矩陣相應的參數(shù)進行操作,操作之后,對圖形的各個定點的坐標分別乘以這個矩陣,就能得到新的定點的坐標。

transform()方法

而Canvas繪圖中,就給咱們提供了一個方法來改變這個變換矩陣,那就是transform()。

默認坐標系是以畫布最左上角為坐標原點(0,0)。越往右X軸數(shù)值越大,越往下Y軸的數(shù)值越大。在默認坐標系中,每一個點的坐標都是直接映射到一個CSS像素上。畫布上一些特定的操作和屬性的設置都使用默認坐標系。然而除了默認坐標系之外,每個畫布還有一個還有一個“當前變換距陣”,作為圖形狀態(tài)的一部分。該矩陣定義了畫布的當前坐標系。當指定了一個點的坐標后,畫布的大部分操作都將該點映射到當前的坐標系中,而不是默認的坐標系。當前變換矩陣是用來指定的坐標轉換成為默認坐標系中的等價坐標。坐標的變換還影響了文本和線段的繪制。
 
調(diào)用translate()方法只是簡單地將坐標原點進行上、下、左、右移動。
rotate()方法會將坐標軸根據(jù)指定角度里進行順時針旋轉。
scale()方法實現(xiàn)對x軸或由y軸上的距離進行延長和縮短。傳遞負值會實現(xiàn)
 
scale以坐標原點做參照點將坐標軸進行翻轉。就好像鏡子中的鏡像。
translate用來將坐標原點移動到畫布最左下角,然后scale方法用于實現(xiàn)將y軸進行翻轉,這樣的就變成了越往上y軸越大。

從數(shù)學角度來理解坐標系變換:
translate、rotate和scale方法想象成對坐標軸的變換,就很容易理解了。從代數(shù)角度很容易理解坐標變換,就是把變換想像成一個變換后坐標系中的點(x,y),到原來的坐標系統(tǒng)變成了(x`,y`)。
調(diào)用 c.translate(dx,dy)。的方法等效如下表達式


復制代碼
代碼如下:

x` = x+dx; //新系統(tǒng)中的x軸的0,在原系統(tǒng)中就是dx
y` = y+dy;
c.scale(sx,sy);
x` = sx*x;
y` = sy*y;
c.rotate()
x` =x*cos(a)-y*sin(a);
y` = y*cos(a)+x*sin(a);

建議使用transform()的時候,可以在如下幾個情況下使用:

1.使用context.transform (1,0,0,1,dx,dy)代替context.translate(dx,dy)
2.使用context.transform(sx,0,0,sy,0,0)代替context.scale(sx, sy)
3.使用context.transform(0,b,c,0,0,0)來實現(xiàn)傾斜效果(最實用)。
不用再使用它去實現(xiàn)旋轉了,另外也沒有也不用全記這些結論,直接記下abcdef六個參數(shù)的意義,效果是一樣的。

下面我們看一個代碼,熟悉一下:

JavaScript Code復制內(nèi)容到剪貼板
  1. <!DOCTYPE html>   
  2. <html lang="zh">   
  3. <head>   
  4.     <meta charset="UTF-8">   
  5.     <title>矩陣變換</title>   
  6.     <style>   
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.     </style>   
  10. </head>   
  11. <body>   
  12. <div id="canvas-warp">   
  13.     <canvas id="canvas">   
  14.         你的瀏覽器居然不支持Canvas?!趕快換一個吧!!   
  15.     </canvas>   
  16. </div>   
  17.   
  18. <script>   
  19.     window.onload = function(){   
  20.         var canvas = document.getElementById("canvas");   
  21.         canvas.width = 800;   
  22.         canvas.height = 600;   
  23.         var context = canvas.getContext("2d");   
  24.         context.fillStyle = "#FFF";   
  25.         context.fillRect(0,0,800,600);   
  26.   
  27.         context.fillStyle = "yellow";   
  28.         context.strokeStyle = "#00AAAA";   
  29.         context.lineWidth = 5;   
  30.   
  31.         context.save();   
  32.         //平移至(300,200)   
  33.         context.transform(1,0,0,1,300,200);   
  34.         //水平方向放大2倍,垂直方向放大1.5倍   
  35.         context.transform(2,0,0,1.5,0,0);   
  36.         //水平方向向右傾斜寬度10%的距離,垂直方向向上傾斜高度10%的距離   
  37.         context.transform(1,-0.1,0.1,1,0,0);   
  38.         context.fillRect(0,0,200,200);   
  39.         context.strokeRect(0,0,200,200);   
  40.         context.restore();   
  41.     };   
  42. </script>   
  43. </body>   
  44. </html>  

運行結果:

setTransform()方法
transform()方法的行為相對于由 rotate(),scale(), translate(), or transform() 完成的其他變換。例如:如果我們已經(jīng)將繪圖設置為放到兩倍,則 transform() 方法會把繪圖放大兩倍,那么我們的繪圖最終將放大四倍。這一點和之前的變換是一樣的。

但是setTransform()不會相對于其他變換來發(fā)生行為。它的參數(shù)也是六個,context.setTransform(a,b,c,d,e,f),與transform()一樣。

這里我們通過一個例子來說明:
繪制一個矩形,通過 setTransform() 重置并創(chuàng)建新的變換矩陣,再次繪制矩形,重置并創(chuàng)建新的變換矩陣,然后再次繪制矩形。

JavaScript Code復制內(nèi)容到剪貼板
  1. <!DOCTYPE html>   
  2. <html lang="zh">   
  3. <head>   
  4.     <meta charset="UTF-8">   
  5.     <title>矩陣變換</title>   
  6.     <style>   
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.     </style>   
  10. </head>   
  11. <body>   
  12. <div id="canvas-warp">   
  13.     <canvas id="canvas">   
  14.         你的瀏覽器居然不支持Canvas?!趕快換一個吧!!   
  15.     </canvas>   
  16. </div>   
  17.   
  18. <script>   
  19.     window.onload = function(){   
  20.         var canvas = document.getElementById("canvas");   
  21.         canvas.width = 800;   
  22.         canvas.height = 600;   
  23.         var context = canvas.getContext("2d");   
  24.         context.fillStyle = "#FFF";   
  25.         context.fillRect(0,0,800,600);   
  26.   
  27.         context.fillStyle="yellow";   
  28.         context.fillRect(200,100,250,100)   
  29.   
  30.         context.setTransform(1,0.5,-0.5,1,30,10);   
  31.         context.fillStyle="red";   
  32.         context.fillRect(200,100,250,100);   
  33.   
  34.         context.setTransform(1,0.5,-0.5,1,30,10);   
  35.         context.fillStyle="blue";   
  36.         context.fillRect(200,100,250,100);   
  37.     };   
  38. </script>   
  39. </body>   
  40. </html>    

運行結果:

解釋一下過程:每當我們調(diào)用 setTransform() 時,它都會重置前一個變換矩陣然后構建新的矩陣,因此在下面的例子中,不會顯示紅色矩形,因為它在藍色矩形下面。

標簽:牡丹江 撫州 內(nèi)蒙古 煙臺 邯鄲 安慶 晉中 玉溪

巨人網(wǎng)絡通訊聲明:本文標題《深入解析HTML5 Canvas控制圖形矩陣變換的方法》,本文關鍵詞  深入,解析,HTML5,Canvas,控制,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入解析HTML5 Canvas控制圖形矩陣變換的方法》相關的同類信息!
  • 本頁收集關于深入解析HTML5 Canvas控制圖形矩陣變換的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    日日日夜夜操| 日韩在线观看网站| 亚洲精品中文一区不卡 | 午夜欧美成人香蕉剧场| 午夜精品国产自在现线拍| 国产视频一区二区三区四区| 免费国产在线观看| 999久久66久6只有精品| 国产伦精品一区二区三区在线观看| 日韩中文字幕一区| 日韩字幕在线| 免费的黄色小视频| 超级乱淫黄漫画免费| 日本免费看视频| 国产成a人片在线观看视频| a级毛片免费全部播放| 成人免费网站久久久| 你懂的福利视频| 欧美日本韩国| 天天做日日干| 亚洲 欧美 成人日韩| 国产原创视频在线| 国产视频网站在线观看| 一级片片| 91麻豆精品国产高清在线| 欧美一区二区三区性| 日本在线www| 日韩在线观看视频黄| 99热热久久| 午夜在线影院| 四虎影视库| 成人a大片高清在线观看| 亚洲女人国产香蕉久久精品| 日韩在线观看视频免费| 91麻豆爱豆果冻天美星空| 精品久久久久久中文字幕2017| 免费国产在线观看| 二级特黄绝大片免费视频大片| 日韩女人做爰大片| 人人干人人插| 精品视频一区二区三区免费| 麻豆系列 在线视频| 99色精品| 99久久精品国产国产毛片 | 精品国产一区二区三区久久久狼 | 韩国毛片 免费| 国产成人精品影视| 久久国产影院| 日日夜夜婷婷| 国产一区二区精品| 成人免费观看视频| 久久国产精品自线拍免费| 中文字幕97| 日韩中文字幕在线亚洲一区| 四虎影视库| 九九精品在线播放| 国产福利免费视频| 九九国产| 国产综合成人观看在线| 亚洲不卡一区二区三区在线| 国产视频一区二区在线观看| 国产亚洲精品aaa大片| 日韩综合| 四虎久久精品国产| 九九九国产| 日韩欧美一二三区| 一级女性大黄生活片免费| 九九九国产| 亚欧成人毛片一区二区三区四区| 国产麻豆精品免费密入口| 91麻豆国产福利精品| 美女免费精品高清毛片在线视| 你懂的在线观看视频| 国产不卡在线看| 你懂的日韩| 成人影院久久久久久影院| 国产一区二区精品久久91| 久久久成人网| 国产原创视频在线| 麻豆系列 在线视频| 成人a大片在线观看| 可以在线看黄的网站| 国产美女在线一区二区三区| 九九精品久久久久久久久| 亚久久伊人精品青青草原2020| 国产不卡在线观看视频| 麻豆午夜视频| 天天做日日爱| 亚洲天堂在线播放| 成人在激情在线视频| 国产伦精品一区二区三区在线观看 | 黄色福利片| 台湾美女古装一级毛片| 成人免费观看网欧美片| 国产视频一区二区在线播放| 国产成人啪精品| 你懂的在线观看视频| 99久久精品国产麻豆| 欧美一区二区三区性| 国产成人精品影视| a级毛片免费观看网站| 999精品视频在线| 黄视频网站在线免费观看| 国产精品免费久久| 亚洲www美色| 香蕉视频三级| 午夜家庭影院| 久久国产精品永久免费网站| 国产高清视频免费观看| 成人免费一级毛片在线播放视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 四虎影视久久久| 中文字幕一区二区三区精彩视频| 日本免费看视频| 免费国产一级特黄aa大片在线| 亚洲精品久久久中文字| 国产麻豆精品高清在线播放| 97视频免费在线| 成人免费网站久久久| 日韩男人天堂| 日本乱中文字幕系列| 四虎影视久久久| 久久福利影视| 欧美日本国产| 日韩专区亚洲综合久久| 韩国三级香港三级日本三级la| 毛片高清| 欧美a级片免费看| 九九精品在线播放| 日日爽天天| 免费毛片播放| 欧美日本免费| 在线观看成人网| 欧美一区二区三区在线观看| 久久久久久久免费视频| 91麻豆国产福利精品| 日本伦理黄色大片在线观看网站| 久久99这里只有精品国产| 九九九在线视频| 日韩在线观看视频免费| 九九精品影院| 欧美a级片视频| 91麻豆国产| 精品视频在线观看视频免费视频| 999久久狠狠免费精品| 国产激情视频在线观看| 国产亚洲精品aaa大片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 九九精品久久久久久久久| 国产视频在线免费观看| 黄色免费三级| 色综合久久手机在线| 成人高清视频在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 韩国毛片 免费| 中文字幕一区二区三区 精品| 日本乱中文字幕系列| 国产视频在线免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级毛片视频播放| 美国一区二区三区| 日本特黄特色aaa大片免费| 麻豆午夜视频| 99久久网站| 亚欧成人乱码一区二区| 日本在线www| 久久久久久久男人的天堂| 日本特黄特色aaa大片免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一级女性全黄生活片免费| a级毛片免费观看网站| 精品久久久久久中文字幕一区| 成人影院一区二区三区| 台湾美女古装一级毛片| 国产极品白嫩美女在线观看看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 天天色成人网| 色综合久久天天综线观看| 色综合久久天天综合| 国产成人啪精品视频免费软件| 九九国产| 久久精品大片| 999久久狠狠免费精品| 国产激情一区二区三区| 久久国产精品只做精品| 天天做人人爱夜夜爽2020| 中文字幕Aⅴ资源网| 久久成人性色生活片| 精品国产亚洲人成在线| 二级特黄绝大片免费视频大片| 成人高清视频在线观看| 国产视频一区二区在线播放| 黄视频网站在线免费观看| 国产一区二区福利久久| 亚洲第一色在线| 91麻豆精品国产自产在线观看一区 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产不卡在线观看| 欧美大片aaaa一级毛片| 亚洲精品影院久久久久久|