HTML5 Canvas 繪製橢圓與橢圓弧的實現
所以,我們需要用JS來實現這個方法。原理就是用已經支援的其它方法來模擬ellipse方法,可以用lineTo, quadraticCurveTo, bezierCurveTo, arcTo, arc等方法來實現。
用lineTo來模擬的話,就是引數方程的形式,計算出橢圓上的點的座標,逐點用lineTo繪製模擬橢圓。簡單粗暴有效。
用quadraticCurveTo, bezierCurveTo是一種近似模擬,用貝塞爾曲線來擬合橢圓或橢圓弧,關鍵在於計算合適的控制點。有些特定場景下很適合。
用arcTo, arc來實現也比較簡單,不需要複雜計算,由於arcTo, arc只提供了繪製正圓弧的功能,要繪製橢圓弧,配合scale變形就可以了。推薦使用該方法。實現程式碼如下:
if (CanvasRenderingContext2D.prototype.ellipse == undefined) { CanvasRenderingContext2D.prototype.ellipse = function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) { this.save(); this.translate(x, y); this.rotate(rotation); this.scale(radiusX, radiusY); this.arc(0, 0, 1, startAngle, endAngle, antiClockwise); this.restore(); } }
使用示例:
//
var canvas = document.getElementById("canvas1"),
ctx = canvas.getContext('2d');
//....
ctx.moveTo(100,200);
ctx.ellipse(300, 200, 100, 60, 0, 0, Math.PI, true);
ctx.stroke();
ellipse方法各引數的含義:x, 橢圓圓心X座標
y, 橢圓圓心Y座標
radiusX, 長半軸長度
radiusY, 長半軸長度
rotation, 橢圓旋轉角度 (單位是度不是弧度)
startAngle, 橢圓弧起始角弧度 (單位是弧度不是度!)
endAngle, 橢圓弧結束角弧度 (單位是弧度不是度!)
antiClockwise, 是否是逆時針方向繪製。true表示逆時針方向繪製橢圓弧,false順時針方向繪製橢圓弧。
至於為什麼一個方法內驚現 2 種角度單位,我只能說:前端標準就是這麼亂!
Google出品的 canvas-5-polyfill.js 用於增強canvas相容性,它也給canvas加上了ellipse方法
相關推薦
HTML5 Canvas 繪製橢圓與橢圓弧的實現
由於HTML Canvas 2D Context標準中並沒有直接繪製橢圓與橢圓弧的方法,所以瀏覽器普遍沒有這個方法,不過,Chrome支援ellipse方法,至於從哪個版本開始支援的,我就未查證了。IE11,Edge, Firefox, Safari目前最新版都還不支援。
html5 canvas繪製圓形印章,以及與頁面互動
來源:https://www.cnblogs.com/hello-word1/p/5137626.html <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF
Html5 Canvas動畫基礎碰撞檢測的實現
在Canvas中進行碰撞檢測,大家往往直接採用遊戲引擎(Cocos2d-JS、Egret)或物理引擎(Box2D)內建的碰撞檢測功能,好奇的你有思考過它們的內部執行機制嗎?下面將針對基本的碰撞檢測技術進行講解: 1、基於矩形的碰撞檢測 所謂碰撞檢測就是判斷物體間是否發生重疊,這裡我們假設討論的碰撞體都是矩
HTML5+Canvas+jQuery呼叫手機拍照功能實現圖片上傳(二)
上一篇只講到前臺操作,這篇專門涉及到Java後臺處理,前臺通過Ajax提交將Base64編碼過的圖片資料資訊傳到Java後臺,然後Java這邊進行接收處理,通過對圖片資料資訊進行Base64解碼,之後使用流將圖片資料資訊上傳至伺服器進行儲存,並且將圖片的路徑地址存進資料庫。
通過html5 canvas繪製時鐘
最近一直在學習html5,學到了html5的canvas標籤,這個畫布真的是很強大,它有對應的javascript的api的支援,你可以在這個標籤裡面繪製任意的圖形,你也可以把圖片放在裡面,能夠做出很炫的效果。 言歸正傳,廢話不多說,首先,html,只一句
HTML5 Canvas繪製的圖形的事件處理
DOM是Web前端領域非常重要的組成部分,不僅在處理HTML元素時會用到DOM,圖形程式設計也同樣會用到。比如SVG繪圖,各種圖形都是以DOM節點的形式插入到頁面中,這就意味著可以使用DOM方法對圖形進行操作。比如有一個<path id="p1">元素,可以直
HTML5 canvas 繪製圓形
canvas繪製圓形的思路: 1、建立路徑 XXX.beginpath(); 2、建立圓形的路徑; 3、關閉路徑;XXX.closepath(); 路徑不關閉也能繪製出圖形 4、設定繪製樣式。 建立圓形路徑時需要用到物件的arc方法,方法定義如:XXX.arc(x,y,r
HTML5 canvas 繪製的文字如何換行?
HTML5 裡的 canvas 元素是一個圖形容器,我們可以通過 JavaScript 來控制它繪製各種文字和影象。 在使用 canvas 繪製某字串的時候,我們可能想要讓該字串在某處按要求換行。 這該怎麼實現呢? 你是不是想到了 JavaScript 裡
Html5 canvas 繪製彩票走勢圖
因需要 要實現一個類似彩票走勢圖的功能,初次學Html5 ,很多地方不明白,前段時間也發帖請教過這個問題,也是沒給個明確說話,在網上搜了很多,也沒有實現的例子,今天仔細研究了下,發現其實也不是很難,現將程式碼貼出來,共同學習! 先來一張效果圖: 實現的程式碼: <!
HTML5 canvas電子簽名與截圖
一:效果圖 二:頁面程式碼 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l
HTML5 Canvas SVG路徑與KineticJS世界地圖,夠有意思!
這個實驗證明了SVG路徑功能的KineticJS通過生成一個互動式地圖從一個SVG資料來源。 產品說明:滑鼠懸停在這個國家 <!DOCTYPE HTML> <html> <head> <style> b
HTML5 Canvas繪製環形進度條
最近比較迷戀canvas,加之做了一個個人網站,有用到環形進度條,記錄下來。 canvas中沒有直接繪製圓的方法,但有一個繪製弧線的context.arc方法, 下面講下用該方法如何繪製出圖片效果。 arc()方法介紹 context.arc(x,y,r,s
第一講:使用html5——canvas繪製奧運五環
<html> <head> <title>初識canvas</title> </head> <body> <canvas id="mc" width="400px" height
基於HTML5 Canvas繪製的支援手勢縮放的室內地圖
你是否有過這樣的經歷,在大型的商圈、商場中傻傻找不到路。嗯,室內地圖就這樣應運而生了。百度地圖、高德地圖等都提供了室內地圖的功能,高德地圖最近還把室內地圖的API開放了。室內地圖的導航、定位功能一定是未來幾年非常有前途的一件事。本文提供了一種基於HTML5
arcgis api for js入門開發系列二十一 用HTML5 canvas繪製地圖 瓦片載入平移縮放
終於開始可以寫程式碼了,手都開始癢了。這裡的程式碼僅僅是在chrome檢測過,我可以肯定的是IE10以下瀏覽器是行不通,我一直在考慮,是不是使用IE禁止看我的篇部落格,就是這群使用IE的人,給我加了很多工作量。 一個地圖的基本動作,無非就是載入資料,
html5 canvas 繪製橫線豎線時不清晰的解決辦法
在繪製一個Tip模樣的圖案時遇到了令人鬱悶的事情:當lineHeight為1時,斜線都很清晰,唯獨橫線和豎線不清晰,目測佔了兩個畫素,而且透明度都被減半;如圖: ,後來經過查資料,終於知道,畫布上的座標並未對應網頁裡的畫素,假如我們要在10,10這個點畫橫線到100,10,
html5 canvas 繪製曲線圖
程式碼: <!Doctype Html> <html> <head> <title>Line Chart Demo</title> <meta http-equiv="Content-T
canvas繪製圖形——圓弧與圓形
canvas 繪製圓弧 繪製圓弧使用 context.arc( ) 函式,包含六個引數。 context.arc( centerx,centery,radius, startingAngle,endingAngle, anticlockwise = false )
HTML5 Canvas中繪製橢圓的幾種方法
1.canvas自帶的繪製橢圓的方法 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)是後來新增的, 引數的意思:(起點x.起點y,半徑x,半徑y,旋轉的角度,起始角,結果角,順時針還是逆時針)
HTML5 canvas實現圖片拉伸、壓縮與裁剪
前言: 我們在網頁中經常會用到圖片展示,通常情況下會給一個固定的寬高來顯示這個圖片,然而從伺服器端上傳的圖片大小是不確定的,如果直接按預設填充這個框有時候就會特別醜orz。作為一個完(wai)美(mao)主(xie)義(hui)者,讓圖片們儘可能優美