中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過HTML5Canvas API繪制弧線和圓形

發布時間:2021-09-15 16:20:26 來源:億速云 閱讀:141 作者:柒染 欄目:web開發

今天就跟大家聊聊有關如何通過HTML5Canvas API繪制弧線和圓形,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

JavaScript Code復制內容到剪貼板

arc(x, y, radius, startRad, endRad, anticlockwise)

 

在canvas畫布上繪制以坐標點(x,y)為圓心、半徑為radius的圓上的一段弧線。這段弧線的起始弧度是startRad,結束弧度是endRad。這里的弧度是以x軸正方向(時鐘三點鐘)為基準、進行順時針旋轉的角度來計算的。anticlockwise表示是以逆時針方向還是順時針方向開始繪制,如果為true則表示逆時針,如果為false則表示順時針。anticlockwise參數是可選的,默認為false,即順時針。
如何通過HTML5Canvas API繪制弧線和圓形

arc()方法中的弧度計算方式

JavaScript Code復制內容到剪貼板

  1. arcTo(x1, y1, x2, y2, radius)  

這個方法將利用當前端點、端點1(x1,y1)和端點2(x2,y2)這三個點所形成的夾角,然后繪制一段與夾角的兩邊相切并且半徑為radius的圓上的弧線。一般情況下,繪制弧線的開始位置是當前端點,結束位置是端點2,并且弧線繪制的方向就是連接這兩個端點的最短圓弧的方向。此外,如果當前端點不在所指定的圓上,本方法還將繪制一條從當前端點到弧線起點的直線。
由于詳細介紹arcTo()方法的篇幅較多,請移步至這里查看arcTo()的詳細用法。

在了解了canvas繪制弧線的上述API之后,我們就一起來看看如何使用arc()繪制弧線。我們已經知道,arc()接收的第4個和第5個參數表示繪制弧線的開始弧度和結束弧度。相信各位讀者在學校的數學或幾何課程上都學過弧度,弧度是一種角度單位。弧長等于半徑的弧,其所對的圓心角就是1弧度。我們還知道,半徑為r的圓,其周長為2πr。在具備這些幾何知識的前提下,我們就可以使用arc()方法繪制弧線了。

使用canvas繪制弧線

現在,我們就來繪制一條半徑為50px的圓的1/4弧線。

JavaScript Code復制內容到剪貼板

  1. <!DOCTYPE html>   
    <html>   
    <head>   
    <meta charset="UTF-8">   
    <title>HTML5 Canvas繪制弧線入門示例</title>   
    </head>   
    <body>   
      
    <!-- 添加canvas標簽,并加上紅色邊框以便于在頁面上查看 -->   
    <canvas id="myCanvas" width="400px" height="300px" style="border: 1px solid red;">   
    您的瀏覽器不支持canvas標簽。   
    </canvas>   
      
    <script type="text/javascript">   
    //獲取Canvas對象(畫布)   
    var canvas = document.getElementById("myCanvas");   
    //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
    if(canvas.getContext){     
        //獲取對應的CanvasRenderingContext2D對象(畫筆)   
        var ctx = canvas.getContext("2d");     
           
        //開始一個新的繪制路徑   
        ctx.beginPath();   
        //設置弧線的顏色為藍色   
        ctx.strokeStyle = "blue";   
        var circle = {   
            x : 100,    //圓心的x軸坐標值   
            y : 100,    //圓心的y軸坐標值   
            r : 50      //圓的半徑   
        };   
        //沿著坐標點(100,100)為圓心、半徑為50px的圓的順時針方向繪制弧線   
        ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI / 2, false);       
        //按照指定的路徑繪制弧線   
        ctx.stroke();   
    }   
    </script>   
    </body>   
    </html>

對應的顯示效果如下圖:
如何通過HTML5Canvas API繪制弧線和圓形

使用canvas沿著順時針方向繪制弧線
如上所示,我們設置了繪制的弧線的所在圓的圓心坐標為(100,100),半徑為50px。由于一個半徑為r的圓的周長為2&pi;r,也就是說,一個完整的圓,其所對應的弧度為2&pi;(換算成常規角度就是360&deg;),所以我們想要畫一個圓的1/4弧線,只要弧度為&pi;/2(即90&deg;)就可以了。在上面的代碼中,我們使用了JavaScript中表示&pi;的常量Math.PI。

此外,在上面的代碼中,我們還設置了繪制弧線的方向為順時針方向(false)。由于起始弧度為0,結束弧度為&pi;/2,因此弧線將從x軸的正方向開始沿著順時針方向繪制,從而得到上面的圖形。如果我們將上述代碼中的弧線繪制方向改為逆時針,會有什么樣的效果呢?

JavaScript Code復制內容到剪貼板

  1. <script type="text/javascript">   
    //獲取Canvas對象(畫布)   
    var canvas = document.getElementById("myCanvas");   
    //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
    if(canvas.getContext){     
        //獲取對應的CanvasRenderingContext2D對象(畫筆)   
        var ctx = canvas.getContext("2d");     
           
        //開始一個新的繪制路徑   
        ctx.beginPath();   
        //設置弧線的顏色為藍色   
        ctx.strokeStyle = "blue";   
        var circle = {   
            x : 100,    //圓心的x軸坐標值   
            y : 100,    //圓心的y軸坐標值   
            r : 50      //圓的半徑   
        };   
        //沿著坐標點(100,100)為圓心、半徑為50px的圓的逆時針方向繪制弧線   
        ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI / 2, true);       
        //按照指定的路徑繪制弧線   
        ctx.stroke();   
    }   
    </script>

對應的顯示效果如下:
如何通過HTML5Canvas API繪制弧線和圓形

使用canvas沿著逆時針方向繪制弧線


使用canvas繪制圓形

當我們學會了繪制弧線之后,舉一反三,我們想要繪制圓形自然也不在話下,只需要將上述代碼的結束弧度改為2&pi;即可。

JavaScript Code復制內容到剪貼板

  1. <script type="text/javascript">   
    //獲取Canvas對象(畫布)   
    var canvas = document.getElementById("myCanvas");   
    //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
    if(canvas.getContext){     
        //獲取對應的CanvasRenderingContext2D對象(畫筆)   
        var ctx = canvas.getContext("2d");     
           
        //開始一個新的繪制路徑   
        ctx.beginPath();   
        //設置弧線的顏色為藍色   
        ctx.strokeStyle = "blue";   
        var circle = {   
            x : 100,    //圓心的x軸坐標值   
            y : 100,    //圓心的y軸坐標值   
            r : 50      //圓的半徑   
        };   
        //以canvas中的坐標點(100,100)為圓心,繪制一個半徑為50px的圓形   
        ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, true);       
        //按照指定的路徑繪制弧線   
        ctx.stroke();   
    }   
    </script>

對應的顯示效果如下:
如何通過HTML5Canvas API繪制弧線和圓形

JavaScript Code復制內容到剪貼板

  1. <script type="text/javascript">   
    //獲取Canvas對象(畫布)   
    var canvas = document.getElementById("myCanvas");   
    //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
    if(canvas.getContext){     
        //獲取對應的CanvasRenderingContext2D對象(畫筆)   
        var ctx = canvas.getContext("2d");     
           
        //開始一個新的繪制路徑   
        ctx.beginPath();   
        //設置弧線的顏色為藍色   
        ctx.strokeStyle = "blue";   
        var circle = {   
            x : 100,    //圓心的x軸坐標值   
            y : 100,    //圓心的y軸坐標值   
            r : 50      //圓的半徑   
        };   
        //以canvas中的坐標點(100,100)為圓心,繪制一個半徑為50px的圓形   
        ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, true);       
        //按照指定的路徑繪制弧線   
        ctx.stroke();   
    }   
    </script>

備注:arc()方法中的起始弧度參數startRad和結束弧度參數endRad都是以弧度為單位,即使你填入一個數字,例如360,仍然會被看作是360弧度。將上述代碼的結束弧度設為360會產生什么用的后果呢?這就要看繪制的方向了(即anticlockwise參數的值),如果是順時針繪制(false),則將繪制出一個完整的圓形;如果是逆時針繪制,大于2&pi;的弧度將被轉換為一個弧度相等、但不大于2&pi;的弧度。例如,將上述代碼中的結束弧度設為3&pi;(Math.PI * 3),如果anticlockwise為false,將會顯示為一個完整的圓形,如果為true,則其顯示效果與設為&pi;時的顯示效果一致。
如何通過HTML5Canvas API繪制弧線和圓形

結束弧度設為3&pi;時,順時針(false)旋轉的繪制效果
如何通過HTML5Canvas API繪制弧線和圓形

結束弧度設為3&pi;時,逆時針(true)旋轉的繪制效果

看完上述內容,你們對如何通過HTML5Canvas API繪制弧線和圓形有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田林县| 井冈山市| 娱乐| 洮南市| 新津县| 渭源县| 新闻| 阿瓦提县| 阳原县| 阜城县| 青河县| 班戈县| 万山特区| 桑植县| 阿尔山市| 元江| 临武县| 靖江市| 石林| 桐庐县| 平塘县| 盐山县| 铜梁县| 轮台县| 安吉县| 灌南县| 固始县| 封开县| 小金县| 江孜县| 固原市| 比如县| 宁武县| 卢湾区| 耿马| 西畴县| 德钦县| 通江县| 华安县| 三河市| 镇远县|