先介紹一下arcTo(x1,y1,x2,y2,radius)
- x1,y1 指現在的位置(moveTo)畫往(x1,y1)。不過…不會真的有moveTo到(x1,y1)的直線,底下會說明,先假設moveTo-( x1,y1)為直線a。
- x2,y2指(x1,y1)畫往(x2,y2)。但…也不會真的有(x1,y1)到(x2,y2)的直線,底下會說明,先假設(x1,y1)-( x2,y2)為直線b。
- radius指一個虛擬圓的半徑(描繪出來圓弧的半徑)。
而直線b基本上是完全看不到的,他是用來決定弧的終點。弧的終點為直線b與虛擬圓的相切。
參考下圖
實際範例
<html> <body> <canvas id="canvas1" width="200" height="200"></canvas> <script type="text/javascript"> var canvas=document.getElementById("canvas1"); var cx = canvas.getContext("2d"); cx.beginPath(); cx.moveTo(0,100); cx.arcTo(50,50,100,100,50); cx.stroke(); </script> </body>
以上是arcTo的用法及介紹。
現在問題來了,不一定所有的瀏覽器解讀arcTo都是如此,使用Opera10的人看範例,應該會發現與說明解釋的樣子不同,以下分別是Chrome與Opera10執行arcTo的結果截圖。
可以很明顯的發現差異,Opera10解析arcTo的參數與別人不同,我測試的結果覺得他的參數意義如下。
- x1,y1 指現在的位置(moveTo)畫往(x1,y1)。而且還真的會畫出moveTo到(x1,y1)的直線。
- x2,y2指(x1,y1)畫往(x2,y2),但畫的是以radius為半徑的弧。不過會有例外:當radius的兩倍(就是直徑)小於(x1,y1)到(x2,y2)的距離時,會以(x1,y1)到(x2,y2)為直徑逆時針畫弧。
- radius一樣是指一個虛擬圓的半徑(描繪出來圓弧的半徑)。
各家瀏覽器支援HTML5的情形不一,真的很困擾,尤其對網頁設計師來說,一定蠻頭大的…
沒有留言:
張貼留言