欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

html5 Canvas畫圖教程(11)—使用lineTo/arc/bezierCurveTo畫橢圓形_HTML5教程

編輯Tag賺U幣

推薦:html5 svg 中元素點擊事件添加方法
最近在用svg的點擊事件做東西,之所以用svg而不用canvas就是因為svg內(nèi)的元素可以添加點擊事件,接下來詳細介紹添加方法,感興趣的朋友可以了解下

在canvas中可以很方便的用arc方法畫出圓形,本來圓形也可以看作是一個寬高相等的橢圓,但canvas中根本沒有畫橢圓的方法,我們要用其他方法來模擬。
我們首先要明確畫一個橢圓需要那些參數(shù),基本的幾何知識告訴我們,橢圓需要圓心坐標,寬度,高度——或者還有旋轉角度,不過這個可以暫時不要,旋轉是比較容易的。
1,使用lineTo畫橢圓
你沒有看錯,lineTo這樣一個純粹用來畫直線的方法居然可以用來畫橢圓?但他確實存在,不過寫法實在是有些不可思議:

復制代碼 代碼如下:www.ghpqjb.com

function DrawEllipse(Canvas,O,OA,OB){
//畫橢圓,例子:var B=new Array(150,150); DrawEllipse(hb,B,50,30);
with (Canvas){
var x=O[0]+OA;
var y=O[1];
moveTo(x,y);
for (var i=0;i<=360;i++){
var ii=i*Math.PI/180;
var x=O[0]+OA*Math.cos(ii);
var y=O[1]-OB*Math.sin(ii);
lineTo(x,y);
}
}
}

這個方法的原理是,一個圓有360度,那么就用lineTo循環(huán)360次,畫出每一度的線段,最終連成一個橢圓。其中需要用到三角函數(shù)正弦余弦進行計算。
注意,這個方法的第2個參數(shù)是個數(shù)組,即橢圓的圓心坐標.

思路很奇葩,而且畫出的橢圓也比較平滑。但不值得大家使用——此方法每畫一個橢圓,就要循環(huán)360次,只有畫的橢圓稍微一多,對瀏覽器的性能就是個考驗。
我們只用了解一下他的思路即可
2,使用arc畫圓,然后把他縮放成一個橢圓
這個方法的原文在此,核心函數(shù)如下:

復制代碼 代碼如下:www.ghpqjb.com

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var centerX = 0;
var centerY = 0;
var radius = 50;
// save state
context.save();
// translate context
context.translate(canvas.width / 2, canvas.height / 2);
// scale context horizontally
context.scale(2, 1);
// draw circle which will be stretched into an oval
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
// restore to original state
context.restore()

此方法用了一個我前面還沒講過的canvas函數(shù),即scale,他能實現(xiàn)canvas的縮放?s放有水平和垂直兩個方向,代碼中把canvas水平方向放大了,而垂直方向不變,so,原來arc畫出的圓形就變成了一個橢圓。
這個方法初看甚妙,代碼少,而且原理淺顯易懂。但分析一下就能發(fā)現(xiàn)他的明顯缺點了,就是——不精確!比如我需要寬171高56的橢圓,此時我們?nèi)绻補rc的半徑定為28的話,那么后面就要為171/28/2這個蛋疼的不知所云的數(shù)字郁悶了。

不過有個折中的辦法是始終把arc的半徑設成100,然后,不夠就放大,超過了就縮小。但是,還是不精確。
3,使用貝賽爾曲線bezierCurveTo
自從覺得上面的縮放法不精確后,我就很想找到一個精確的畫橢圓的方法,最后在stackoverflow上找到了:

復制代碼 代碼如下:www.ghpqjb.com

function drawEllipse(ctx, x, y, w, h) {
var kappa = 0.5522848;
ox = (w / 2) * kappa, // control point offset horizontal
oy = (h / 2) * kappa, // control point offset vertical
xe = x + w, // x-end
ye = y + h, // y-end
xm = x + w / 2, // x-middle
ym = y + h / 2; // y-middle
ctx.beginPath();
ctx.moveTo(x, ym);
ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
ctx.closePath();
ctx.stroke();
}

這個方法可以算是比較完美的了。他把一個橢圓分成了4條貝塞爾曲線,用他們連成了一個橢圓。最后寬度高度也比較精確,開銷也較少。
但此方法依然有缺點。大家看那個kappa參數(shù),有個很奇特的值,相信很多人在幾何專家告訴你為什么他要取這個值之前,都不明白為什么非要取這個值——我到現(xiàn)在還是不知道。并且我有很強烈的想把他改一下看看有什么后果的沖動。

當然我這種類似強迫癥患者的沖動并不能說成是此方法的缺點,他真正的缺點是——為什么要用4條貝塞爾曲線?我個人覺得,一個橢圓明顯是由兩條貝塞爾曲線組成的而不是4條。這個想法最終讓我找到了最完美的畫橢圓的方法。
 4,使用兩條貝賽爾曲線畫出橢圓
為了了解上一個方法能否精簡,我專門注冊了一個stackoverflow的帳號去提問,由于問題里有圖片,積分不夠不能傳,我還迫不得已用勉勉強強的英語水平去回答老外的問題掙積分。但最終好運到了,回答一個問題就解決了我的積分問題。
我提的貝賽爾曲線和橢圓的關系的問題在此.
說實話,下面老外的回答我大部分沒看懂,但幸虧他提供了一個代碼示例頁,讓我明白了原理,在此對他表示再次的感謝。而根據(jù)他的解答,我找到的畫橢圓的方法如下:

復制代碼 代碼如下:www.ghpqjb.com

//橢圓
CanvasRenderingContext2D.prototype.oval = function (x, y, width, height) {
var k = (width/0.75)/2,
w = width/2,
h = height/2;
this.beginPath();
this.moveTo(x, y-h);
this.bezierCurveTo(x+k, y-h, x+k, y+h, x, y+h);
this.bezierCurveTo(x-k, y+h, x-k, y-h, x, y-h);
this.closePath();
return this;
}

此方法既精確,又代碼少,而且也沒有奇怪的難懂的地方。只需要記住這一點,橢圓的寬度與畫出橢圓的貝賽爾曲線的控制點的坐標比例如下:
貝塞爾控制點x=(橢圓寬度/0.75)/2這一點已經(jīng)在代碼中體現(xiàn)了。

大家可自行試驗上面的4個方法畫出橢圓。
如果你發(fā)現(xiàn)了更簡單的方法,也請分享出來大家探討吧。

分享:HTML5之SVG 2D入門5—顏色的表示及定義方式
SVG和canvas中是一樣的,都是使用標準的HTML/CSS中的顏色表示方法,這些顏色都可以用于fill和stroke屬性,接下來介紹下顏色的表示及定義方式感興趣的朋友可以了解下,或許對你有所幫助

來源:未知//所屬分類:HTML5教程/更新時間:2013-04-22
相關HTML5教程
在线能看的av| 乱熟女高潮一区二区在线| 免费观看av网站| 性欧美hd调教| 免费的国产精品| 5858s免费视频成人| 91久久精品日日躁夜夜躁国产| 在线观看av免费观看| 亚洲成人久久精品| 另类天堂av| 欧美日韩精品一区视频| 99精品99久久久久久宅男| 亚洲香蕉中文网| 色豆豆成人网| 国产寡妇亲子伦一区二区| 亚洲国产中文字幕在线观看| 视频一区亚洲| 伊人国产在线观看| 成人精品视频| 亚洲一区二区三区三| 欧洲精品毛片网站| 国产91在线免费观看| 亚洲av成人精品毛片| 久久精品国内一区二区三区| 精品国产青草久久久久福利| 日韩免费av电影| 麻豆changesxxx国产| 久久99国内| 亚洲一区二区三区四区的| 国产成人久久久| 玖玖爱视频在线| 亚洲精品永久免费视频| 国产真实精品久久二三区| 日韩精品视频中文在线观看| 亚洲第一综合网站| 永久免费无码av网站在线观看| 亚洲精品久久久| 色婷婷国产精品综合在线观看| 91传媒在线免费观看| 免费污网站在线观看| 97久久亚洲| 国产精品久久久久久久久搜平片 | 欧美人与动牲交xxxxbbbb| 好吊色在线视频| 亚洲国产专区| 欧美不卡一二三| 在线观看日韩片| 探花国产精品一区二区| 久久aⅴ国产紧身牛仔裤| 精品免费视频一区二区| 中文字幕综合在线观看| 中文天堂在线播放| 亚洲综合欧美| 亚洲精品suv精品一区二区| av一区二区三区免费观看| 国产女18毛片多18精品| 久久精品国产**网站演员| 亚洲人成电影在线| 国产精品亚洲αv天堂无码| 手机av免费在线观看| 福利电影一区二区| 欧美日韩成人精品| 日韩高清在线一区二区| 久久99国产精品二区高清软件| 久久久99精品免费观看不卡| 日本久久久久久久久久久| 久久性爱视频网站| 精品三级av| 亚洲成a人在线观看| 国产成人亚洲欧美| 中文字幕一区二区三区手机版| 欧美视频久久| 亚洲国产欧美自拍| 97成人在线免费视频| 无码国精品一区二区免费蜜桃| 91麻豆精品在线观看| 欧美怡红院视频一区二区三区| 粉嫩av懂色av蜜臀av分享| 神马午夜久久| 色综合欧美在线视频区| 五月天色一区| 国产视频在线观看免费| 高清国产一区二区三区| 国语对白做受69| 无套内谢大学处破女www小说| 国产日产精品_国产精品毛片| 色老综合老女人久久久| 亚洲国产日韩欧美| 国产一区二区波多野结衣 | 成人av在线资源| 国内精品久久影院| 欧美老熟妇乱大交xxxxx| 色综合综合网| 欧美人与性动xxxx| 日产精品久久久久久久蜜臀| 婷婷丁香花五月天| 国产精品美女久久久久久2018| 51成人做爰www免费看网站| 成年人午夜视频| 日韩电影在线一区二区三区| 日韩中文有码在线视频| 亚洲美女高潮久久久| 久久综合欧美| 在线播放日韩导航| 成人毛片一区二区| 粉嫩av一区二区三区四区五区 | 美腿丝袜亚洲三区| 欧美大片免费看 | 日本一区二区在线不卡| 亚洲aⅴ男人的天堂在线观看| 亚洲激情视频一区| 毛片av一区二区三区| 欧美激情一级精品国产| 男女做爰猛烈刺激| 亚洲成人原创| 中文字幕精品在线| 中文字幕18页| 日本一区二区免费高清| 精品播放一区二区| 国产永久免费网站| 国产区精品区| 亚洲国产精品免费| 视频免费1区二区三区| 免费精品国产| 亚洲成人精品在线| 国产高清av片| 色婷婷色综合| 亚洲女人被黑人巨大进入| 91亚洲一区二区| 久久99国产精品视频| 欧美α欧美αv大片| 奇米影音第四色| 亚洲精品国产动漫| 亚洲第一二三四五区| 97免费公开视频| 国产精品毛片久久| 亚洲午夜女主播在线直播| 韩国三级视频在线观看| 欧美不卡视频| 日韩中文字幕久久| 91视频免费在观看| 久久中文在线| 清纯唯美亚洲激情| 成年人免费看毛片| 成人性生交大片| 147欧美人体大胆444| 91国内精品视频| 国产精品萝li| 视频一区不卡| 国产 日韩 欧美一区| 欧美性猛交xxxx富婆| 精品国产一二三四区| 成人18夜夜网深夜福利网| 欧美一区2区视频在线观看| 污污动漫在线观看| 第九色区aⅴ天堂久久香| 亚洲视频自拍偷拍| 第一次破处视频| 玖玖精品视频| 国产精品久久久久久久久久99 | 亚洲精品黄色| 国语自产精品视频在线看| 国产精品18p| 成人av免费在线| 国内成+人亚洲| 午夜18视频在线观看| 婷婷久久综合九色国产成人 | 欧美一级黄色片视频| 九色精品91| 国产香蕉一区二区三区在线视频| 国产人妻一区二区| 免费高清不卡av| 成人免费视频网| 国产欧美熟妇另类久久久| 亚洲欧美日韩一区二区三区在线观看| 偷拍盗摄高潮叫床对白清晰| 久久免费福利| 亚洲精品在线免费观看视频| 少妇精品无码一区二区三区| 国产人成精品一区二区三| 日产精品久久久一区二区福利| 无码视频在线观看| 最新欧美精品一区二区三区| 国产女教师bbwbbwbbw| 美女主播精品视频一二三四| 日韩成人中文字幕| 神马久久久久久久久久久| 精品一区二区免费看| 7777精品久久久大香线蕉小说| 国产成人av免费看| 精品人伦一区二区三区蜜桃网站| www日韩视频| 亚洲香蕉av| 97色在线视频| 这里只有精品免费视频| 一区二区三区在线观看网站| 国产97在线 | 亚洲| 日韩免费久久| 欧美激情视频给我| 日韩电影在线观看一区二区| 亚洲三级免费观看| 日韩欧美国产综合在线| 欧美在线观看视频一区| 欧美极品少妇xxxxⅹ喷水| youjizz在线视频| 亚洲欧美电影院| 免费在线观看毛片网站| 欧美精品国产一区二区| 日韩美女在线观看一区| 99在线观看免费| 在线国产电影不卡| www.美色吧.com| 精久久久久久久久久久| 精品在线视频一区二区| 国产高清亚洲| 亚洲人成电影网站色…| 久久久久久久中文字幕| 国产精品三级在线观看| 国产精品宾馆在线精品酒店| 亚洲精品91| 国产精品久久久久免费a∨| 风流老熟女一区二区三区| 欧美视频在线一区二区三区 | 欧美福利第一页| 99在线精品一区二区三区| 中文字幕一区二区三区最新| 国产欧美日韩免费观看| 性亚洲最疯狂xxxx高清| 99热这里只有精品在线观看| 欧美日韩免费观看一区二区三区| 日韩一级视频在线观看| 成人免费av网站| 黄色a级在线观看| 久久久影院免费| 欧美一区二区三区图| 亚洲欧美激情在线观看| 欧美一区二区三区日韩| 日本不卡一区视频| 国产偷国产偷亚洲高清人白洁| 无码 制服 丝袜 国产 另类| 在线中文字幕第一区| 国产欧美va欧美va香蕉在| 神马久久资源| 亚洲欧洲黄色网| 亚洲GV成人无码久久精品| 婷婷综合五月天| wwwxx日本| 国产福利精品导航| 经典三级在线视频| 久久精品影视| 国产精品一区二区久久| 日本a人精品| 最近2019免费中文字幕视频三 | 99re8精品视频在线观看| 永久555www成人免费| 中文字幕日韩免费| 在线观看一区二区精品视频| 亚洲精品国产熟女久久久| 久久青草欧美一区二区三区| 黄色动漫在线免费看| 麻豆亚洲精品| 欧美在线一二三区| 狠狠色狠狠色综合婷婷tag| 国产成人精品免费久久久久| 88xx成人永久免费观看| 国产亚洲精品美女久久久| 最新在线中文字幕| 欧美夫妻性生活| 欧美人禽zoz0强交| 亚洲高清视频的网址| 色婷婷免费视频| 久久蜜臀精品av| 三上悠亚在线一区二区| 国产真实乱子伦精品视频| 无码人妻精品一区二区蜜桃网站| 精品电影一区| 精品在线视频一区二区| 精品国产精品久久一区免费式| 国产精品 欧美在线| 亚洲精品成a人ⅴ香蕉片| 久久人人爽人人爽爽久久| 亚洲xxx在线| 精品视频偷偷看在线观看| 波多野结衣av无码| 欧美群妇大交群中文字幕| 久草网站在线观看| 狠狠躁夜夜躁人人爽超碰91| 亚洲v国产v欧美v久久久久久| 中文字幕日韩精品一区| 精产国品一区二区三区| 91丨九色丨蝌蚪丨老版| 好男人www社区| 国产麻豆精品久久一二三| 欧美又粗又长又爽做受| 视频在线观看一区| 日韩video| 欧美一级一区| 国产一区一区三区| 亚洲美女一区| 亚洲一区三区电影在线观看| 黄色成人在线网站| 欧美日韩另类丝袜其他| 一个色综合网| 精品在线不卡| 中文字幕亚洲综合久久五月天色无吗''| 国产精品免费一区二区| 欧美人与物videos另类xxxxx| 91成人免费观看| 日韩精品免费| 精品国产乱码久久久久久郑州公司 | 日韩资源在线观看| 五月婷婷久久久| 久久这里只有精品视频首页| 日韩毛片免费观看| 欧美激情国产精品| 精品久久毛片| 欧美诱惑福利视频| 中文字幕一区二区三区四区久久| 日本在线精品视频| 久久久久高潮毛片免费全部播放| 国产精品一区二区在线| 亚洲人成网www| 国产精品12| 91高清一区| 亚洲国产精品久久久久婷婷老年 | 日韩你懂的在线播放| 中文天堂在线视频| 亚洲女人被黑人巨大进入al| 成人毛片在线免费观看| 俺去亚洲欧洲欧美日韩| 高清av一区二区三区| 日本精品久久久| 久久超级碰碰| 99久久国产免费免费| 欧美激情国产在线| 日韩av一级大片| 日韩一级大片| 97在线国产视频| 国产成人精品免费| 波多野结衣网页| 亚洲欧美视频在线观看视频| 婷婷综合在线视频| 欧美日韩在线三区| 久久久久久亚洲av无码专区| 亚洲老板91色精品久久| 午夜影院免费视频| 4p变态网欧美系列| 天天久久夜夜| 蜜桃麻豆www久久国产精品| 亚洲精品偷拍| 男人的天堂狠狠干| av亚洲产国偷v产偷v自拍| 韩国三级在线看| 亚洲精品福利视频网站| 婷婷久久综合网| 欧美一区二区三区啪啪| 国产免费av观看| 超碰97人人做人人爱少妇| 精品午夜视频| 91精品网站| 99精品国产一区二区青青牛奶 | √天堂中文官网8在线| 在线不卡免费av| 国产精品视频在线观看免费| 欧美成人免费在线观看| 玖玖玖电影综合影院| 91九色视频在线观看| 欧美精选在线| 人妻无码久久一区二区三区免费| eeuss影院一区二区三区| 日韩www视频| 色噜噜狠狠色综合欧洲selulu| 欧美日韩在线视频播放| 久久久精品国产一区二区| 免费欧美网站| 国产自产精品| 久久最新视频| 一区二区三区欧美精品| 亚洲精品免费视频| 九九热精彩视频| 亚洲精品自在久久| 久久免费影院| 丁香五月网久久综合| 亚洲一区二区三区四区五区午夜| 色综合av综合无码综合网站| 欧美国产成人精品| av激情在线观看| 日韩av网址在线| 懂色aⅴ精品一区二区三区| 69堂成人精品视频免费| 亚洲综合日本| 久久久久久久久久久久久久久国产| 一级做a爱片久久| 久久久久女人精品毛片九一| 色系列之999| 老司机成人在线| 一区二区三区欧美成人| 成人美女在线视频| 国产欧美小视频| 亚洲国产精品女人久久久|