canvas rotate()
rotate方法可以將canvas圖片圍繞原點旋轉指定的弧度。
關於原點的概念可以參閱canvas座標系原點一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼context.rotate(angle);
特別說明:angle是要旋轉的弧度,不要理解成角度,後面會給出換算公式。
瀏覽器相容:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(2).谷歌瀏覽器支援此方法。
(3).火狐瀏覽器支援此方法。
(4).Opera瀏覽器支援此方法。
(5).Safari瀏覽器支援此方法。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas{ border:1px solid #d3d3d3; width:300px; height:150px; } </style> <script> window.onload= () => { let cvs=document.getElementById("myCanvas"); let ctx=cvs.getContext("2d"); ctx.rotate(20*Math.PI/180); ctx.fillRect(50,20,100,50); } </script> </head> <body> <canvas id="myCanvas">當前瀏覽器不支援此標籤</canvas> </body> </html>
程式碼執行效果截圖如下:
canvas圖片會圍繞著左上角原點進行旋轉,旋轉了20度角,下面給出弧度與度的換算公式。
(1).假設要旋轉的角度是degrees。
(2).那麼換算成弧度就是degrees*Math.PI/180。
(3).上述程式碼中藥旋轉20度,那麼就是20*Math.PI/180。
前文已經介紹過,canvas圖形的預設原點位置是左上角叫,當然我們可以人為規定。
特別說明:圍繞的是畫布座標系的原點進行旋轉,並不是圍繞圖形左上角旋轉。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas{ border:1px solid #d3d3d3; width:300px; height:150px; } </style> <script> window.onload= () => { let cvs=document.getElementById("myCanvas"); let ctx=cvs.getContext("2d"); ctx.fillRect(50,20,100,50); ctx.fillStyle = 'red'; ctx.rotate(48*Math.PI/180); ctx.fillRect(50,20,100,50); } </script> </head> <body> <canvas id="myCanvas">當前瀏覽器不支援此標籤</canvas> </body> </html>
程式碼執行效果截圖如下:
程式碼分析如下:
(1).上述程式碼是為了演示旋轉是圍繞畫布原點進行的,而不是圖形左上角。
(2).黑色矩形演示了圖形的預設位置。
(3).紅色矩形這是旋轉48度角後的位置,如果是圍繞自身的左上角旋轉,絕對不會在這個位置。
有時候我們期望矩形能夠圍繞自身的中心位置進行旋轉,考慮到本文的篇幅問題,不在這裡介紹了。
關於圍繞自身中心位置旋轉可以參閱canvas 圍繞中心位置旋轉一章節。
相關文章
- canvas translate()、scale()和rotate()方法程式碼例項Canvas
- [LeetCode] Rotate StringLeetCode
- 48. Rotate Image
- CSS3 rotate()CSSS3
- Rotate Array@LeetCodeLeetCode
- [LeetCode] 61. Rotate ListLeetCode
- Leetcode 61. Rotate ListLeetCode
- CSS rotate3d(x,y,z,angle)CSS3D
- codeforces 1209E1 Rotate Columns (easy version)
- 帶你理解transform:rotate(含三維檢視)ORM
- canvasCanvas
- 常用的畫素操作演算法:Resize、Flip、Rotate演算法
- CSS3 rotate3d(x,y,z,angle)CSSS33D
- 題解:CF1209E1 Rotate Columns (easy version)
- 圖解:什麼是旋轉陣列(Rotate Array)?圖解陣列
- WPF C# create canvas and draw ellipse in canvasC#Canvas
- canvas rect()Canvas
- canvas strokeStyleCanvas
- canvas lineTo()Canvas
- canvas strokeRect()Canvas
- canvas createRadialGradient()Canvas
- canvas createLinearGradient()Canvas
- canvas arc()Canvas
- canvas stroke()Canvas
- canvas fill()Canvas
- canvas fillStyleCanvas
- canvas setTransform()CanvasORM
- canvas transform()CanvasORM
- 初探canvasCanvas
- canvas closePath()Canvas
- canvas moveTo()Canvas
- canvas beginPath()Canvas
- canvas getContext()CanvasContext
- canvas getImageData()Canvas
- canvas isPointInPath()Canvas
- canvas putImageData()Canvas
- canvas drawImage()Canvas
- canvas clip()Canvas