青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網(wǎng)

17站長網(wǎng) 首頁 編程教程 Html5教程 查看內(nèi)容

HTML5 Canvas 轉(zhuǎn)換

html5 Canvas的轉(zhuǎn)換方法,在線實例演示如何使用html5 Canvas進行旋轉(zhuǎn)、移動、縮放,圍繞不同點旋轉(zhuǎn),縮放比例設(shè)置等。

您可以將轉(zhuǎn)換應(yīng)用于HTML5畫布上繪制的任何內(nèi)容。這是您可以應(yīng)用的轉(zhuǎn)換的列表:

移動(移動繪制的內(nèi)容)
旋轉(zhuǎn)
縮放

本文中介紹所有這些轉(zhuǎn)換

轉(zhuǎn)換矩陣

可以在2D上下文中設(shè)置轉(zhuǎn)換矩陣。此矩陣將乘以畫布上繪制的所有內(nèi)容。對于本教程中使用的示例,我將其設(shè)置為“身份”矩陣,該矩陣乘以x,y坐標(biāo)集后得出x,y。換句話說,不進行任何轉(zhuǎn)換。
這是將轉(zhuǎn)換矩陣設(shè)置為單位矩陣的方法:

context.setTransform(1, 0, 1, 0);

移動

可以將移動應(yīng)用于畫布上繪制的所有內(nèi)容。移動意味著所畫內(nèi)容的重定位。這是您在代碼中設(shè)置移動的方式:

var x = 100;var y =  50;
context.translate(x, y);

本示例將在畫布上繪制的所有形狀在x軸上移動100,在y軸上移動50。
注意:平移僅適用于translate()調(diào)用函數(shù)后繪制的形狀。在該函數(shù)調(diào)用之前繪制的形狀不受影響。
這是另一個示例。在相同的坐標(biāo)處繪制了兩個矩形,但是在translate()調(diào)用該函數(shù)之前繪制了一個矩形,在之后繪制了一個矩形

<canvas id="ex1" width="500" height="150" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
<script>
var canvas  = document.getElementById("ex1");
var context = canvas.getContext("2d");
 
context.fillStyle = "#ff0000";
context.fillRect(10,10, 100, 100);
 
context.translate(50, 25);
 
context.fillStyle = "#0000ff";
context.fillRect(10, 100);
</script>

這是在畫布上繪制時的結(jié)果:

HTML5 Canvas 轉(zhuǎn)換

旋轉(zhuǎn)

您可以將自動旋轉(zhuǎn)應(yīng)用于在HTML5畫布上繪制的任何形狀。這是通過rotate()2D上下文上的功能完成的 。這是一個簡單的示例:

context.rotate(radians);

旋轉(zhuǎn)角度作為參數(shù)傳遞給rotate()函數(shù)。該值必須以弧度而不是度為單位。
設(shè)置旋轉(zhuǎn)后繪制的所有形狀都將繞畫布上的0,0點旋轉(zhuǎn)。這是畫布的左上角。
與平移一樣,旋轉(zhuǎn)僅應(yīng)用于rotate() 調(diào)用函數(shù)后繪制的所有形狀。
這是在設(shè)置旋轉(zhuǎn)前后繪制相同矩形的示例:

<canvas id="ex2" width="500" height="150" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
<script>
 var canvas  = document.getElementById("ex2");
var context = canvas.getContext("2d");
 context.fillStyle = "#ff0000";
 context.fillRect(10, 100);
 
 context.rotate( (Math.PI / 180) * 25);  //rotate 25 degrees.
 context.fillStyle = "#0000ff";
 context.fillRect(10, 100);
</script>

這是在畫布上繪制矩形時的外觀:

HTML5 Canvas 轉(zhuǎn)換

圍繞不同點旋轉(zhuǎn)

如前所述,所有形狀都圍繞畫布(0,0)的左上角旋轉(zhuǎn)。但是,如果您希望形狀繞不同的點旋轉(zhuǎn)怎么辦?例如,圍繞其自身的中心旋轉(zhuǎn)形狀?
要圍繞其自身的中心旋轉(zhuǎn)形狀,必須首先將畫布平移到形狀的中心,然后旋轉(zhuǎn)畫布,然后將畫布平移回0,0,然后繪制形狀。
這是一個代碼示例,它使藍色矩形圍繞其中心旋轉(zhuǎn):

<canvas id="ex3" width="500" height="150" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
<script>
var canvas  = document.getElementById("ex3");
var context = canvas.getContext("2d");
 
var x      = 10;
var y      = 10;
var width  = 100;
var height = 100
var cx     = x + 0.5 * width;
var cy     = y + 0.5 * height;
 
context.fillStyle = "#ff0000";
context.fillRect(x, y, width, height);
 
context.translate(cx, cy);
context.rotate( (Math.PI / 180) * 25);  //rotate 25 degrees.
context.translate(-cx, -cy); //set center back to 0,0
context.fillStyle = "#0000ff";
context.fillRect(x, height);
</script>

這是在畫布上繪制時的外觀:

HTML5 Canvas 轉(zhuǎn)換

此示例首先將畫布的中心平移(移動)到正方形的中心(cx,cy)。然后將畫布旋轉(zhuǎn)25度。然后,它將畫布再次轉(zhuǎn)換回0,0。現(xiàn)在,畫布圍繞cx,cy旋轉(zhuǎn)了25度。您繪制的所有內(nèi)容都將圍繞cx,cy旋轉(zhuǎn)顯示。最終,該矩形被繪制為好像什么都沒發(fā)生一樣,但是現(xiàn)在它將圍繞cx,cy旋轉(zhuǎn)25度。這僅使用轉(zhuǎn)換調(diào)用即可實現(xiàn)。矩形的坐標(biāo)不變。請注意context.fillRect(),繪制紅色和藍色矩形的兩個調(diào)用是如何相同的。正是它們之間的轉(zhuǎn)換調(diào)用使它們出現(xiàn)在不同的位置和旋轉(zhuǎn)位置

縮放

可以對在HTML5畫布上繪制的所有形狀應(yīng)用自動縮放。
縮放時,可以通過某些因素縮放x軸和y軸上的所有坐標(biāo)。您可以使用scale()函數(shù)設(shè)置這些因素,如下所示:

var scaleX = 2;
var scaleY = 2;
context.scale(scaleX, scaleY);

本示例將x軸和y軸上的所有坐標(biāo)縮放2倍。
與translate()和一樣rotate(),縮放比例僅適用于scale()調(diào)用后繪制的形狀。
這是另一個繪制紅色和藍色矩形的代碼示例,其中縮放比例適用于藍色矩形:

<canvas id="ex5" width="500" height="250" style="border: 1px solid #cccccc;">
    HTML5 Canvas not supported
</canvas>
<script>
var canvas  = document.getElementById("ex5");
var context = canvas.getContext("2d");
var x      = 10;
var y      = 10;
var width  = 100;
var height = 100
 
context.fillStyle = "#ff0000";
context.fillRect(x, height);
 
context.scale(2,2);
 
context.fillStyle = "#0000ff";
context.fillRect(x, height);
</script>

這是在畫布上生成的grapichs:

HTML5 Canvas 轉(zhuǎn)換

請注意,藍色矩形的大小是紅色矩形的兩倍。
還要注意,從藍色矩形的左上角到畫布的左上角(0,0)的距離也兩倍。所有坐標(biāo)都縮放了兩倍,矩形的左上角坐標(biāo)也是如此。如果要避免在縮放時移動形狀,則必須將縮放與平移結(jié)合起來.

平移,旋轉(zhuǎn)和縮放組合

當(dāng)然可以將所有三個轉(zhuǎn)換組合在同一畫布上。但是,就像組合旋轉(zhuǎn)和平移時一樣,對2D上下文進行函數(shù)調(diào)用的順序也很重要。如果scale()在調(diào)用translate() 等之前調(diào)用,則結(jié)果看起來會有所不同。您可能需要對函數(shù)調(diào)用的順序進行一些調(diào)整才能使其正確

返回頂部
主站蜘蛛池模板: 久久无码AV亚洲精品色午夜 | 波多野结衣的AV一区二区三区 | 超碰在线观看 | 色欲天天天综合网免费 | 亚洲AV美女成人网站P站 | 爱豆剧果冻传媒在线播放 | 青青草原免费在线 | 亚洲精品无码午夜福利在线观看 | 一本道久在线综合道 | 亚洲欧美强伦一区二区另类 | 老司机午夜影院试看区 | 亚洲精品美女久久777777 | 18黄女脱内衣 | 99热最新在线 | 全免费A敌肛交毛片免费懂色AV | 亚洲 欧美 中文 日韩 视频 | 亚洲呦女专区 | 亚洲精品视频免费看 | 亚洲欧美日本中文子不卡 | 久久永久免费视频 | 双性将军粗壮H灌满怀孕 | 日本888xxxx| 夜色55夜色66亚洲精品网站 | 久久中文字幕人妻熟AV女蜜柚M | chinesedaddy80老年人 | AV天堂午夜精品一区 | 99re这里只有精品国产 | 99久久国产露脸精品国产吴梦梦 | 国产亚洲精品AV片在线观看播放 | 亚州三级久久电影 | 三级叫床震大尺度视频 | 色色色久久久免费视频 | 成年人在线免费观看视频网站 | 一品道门免费视频韩国 | 久久精品综合网中文字幕 | 久久精品成人免费看 | 国产午夜精品理论片久久影视 | 亚洲人视频在线观看 | 国产人妻麻豆蜜桃色 | 欧美国产日韩久久久 | 色老板美国在线观看 |