欧美三区四区_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這樣一個純粹用來畫直線的方法居然可以用來畫橢圓?但他確實存在,不過寫法實在是有些不可思議:

復制代碼 代碼如下:m.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ù)如下:

復制代碼 代碼如下:m.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上找到了:

復制代碼 代碼如下:m.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ù)他的解答,我找到的畫橢圓的方法如下:

復制代碼 代碼如下:m.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一区二区三区网页 | 日本视频www| 高清一区二区三区| 91色在线porny| 在线视频日韩精品| 国产香蕉一区二区三区| 日韩 欧美 精品| 久久99国产精品视频| 一区在线播放视频| 久久久久久久久久久久久久久久久久av| 青春草国产视频| 丰满人妻一区二区三区四区| 欧美精品麻豆| 色av一区二区| 国产91aaa| 在线观看免费小视频| 午夜视频一区二区在线观看| www一区二区| 久久久成人精品| 欧美黄网站在线观看| 夜夜躁很很躁日日躁麻豆| 在线不卡亚洲| 欧美欧美欧美欧美| 精品蜜桃传媒| 少妇被躁爽到高潮无码文| 九色精品91| 亚洲一区二区三区自拍| 国产精品久久久久久久天堂| 一级少妇精品久久久久久久| 日本精品另类| 91一区二区在线| 欧美人与性动交| 污版视频在线观看| 日韩精品一区二区三区| 国产一区二区精品久久99| 亚洲美女av黄| 真人抽搐一进一出视频| 国产女人高潮的av毛片| 日本美女一区二区| 日韩av在线最新| 青青草视频在线视频| 亚洲天堂999| 日韩av不卡在线观看| 日韩高清人体午夜| 蜜臀精品一区二区| www.av在线.com| 国产美女久久久久| 久久精品99久久久香蕉| 国产熟人av一二三区| 午夜在线观看视频18| 国产69精品一区二区亚洲孕妇| 中文字幕亚洲欧美日韩2019| 日韩一级免费在线观看| 亚洲av成人无码久久精品老人| 高清不卡在线观看av| 久久综合久中文字幕青草| 国产福利影院在线观看| 久久99久久99精品免观看软件| 99久久国产综合精品女不卡| 久久久久久999| www.黄色网| 国产ts一区| 亚洲成人精品在线观看| 福利视频一区二区三区| 青青草国产在线观看| 亚洲色图网站| 日韩一区二区在线观看视频| 一级黄色录像免费看| 国产又大又粗又硬| 国产高清精品网站| 欧美国产精品人人做人人爱| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 日本国产精品视频| 欧美一区二区三区成人精品| 伊人成综合网yiren22| 色噜噜狠狠成人中文综合| 涩涩涩999| 国产精品呻吟久久| 国产精品1区2区3区| 久久免费成人精品视频| 亚洲熟女乱综合一区二区三区| 日韩激情啪啪| 欧美视频一区二区三区四区| 免费在线观看污污视频| 国内精品久久久久久久久久| 成人午夜在线免费| 欧洲亚洲妇女av| 欧美色图17p| 欧美在线网址| 日韩激情av在线播放| 亚洲不卡视频在线| 久久伊人久久| 丁香五六月婷婷久久激情| 日本一区二区在线| 99热这里只有精品99| 波多野结衣在线一区| 日韩美女主播视频| 国产色无码精品视频国产| 欧美日韩亚洲一区三区| 亚洲精品视频网上网址在线观看| 天堂av在线网站| 98视频精品全部国产| 第一福利永久视频精品| 在线观看成人av电影| 亚洲精品18p| 国产精品丝袜一区| 99久久国产免费免费| 91video| 国产乱色国产精品免费视频| 秋霞成人午夜鲁丝一区二区三区| 自拍偷拍第9页| 国产亚洲精品自拍| 久久久精品久久| 扒开jk护士狂揉免费| 偷拍欧美精品| 亚洲欧美日韩爽爽影院| 欧美一区二区三区影院| 精品日韩在线| 亚洲高清久久网| 午夜福利123| 激情五月色综合国产精品| 日韩欧美一区二区不卡| 浓精h攵女乱爱av| 中文字幕av日韩精品| 一根才成人网| 亚洲国产成人91porn| 亚洲成人午夜在线| 天天干免费视频| 一区二区三区日韩精品视频| 日韩成人av网站| 神宫寺奈绪一区二区三区| 中文字幕亚洲精品在线观看| 欧美xxxx黑人又粗又长密月| 亚洲精品久久久久久无码色欲四季 | 九九热精品在线| 国产三级精品三级观看| 亚洲av色香蕉一区二区三区| 五月天婷婷激情网| 中文字幕一区二区三中文字幕| 久久久久久九九九九| 国产视频第一页| 亚洲视频在线观看一区| 视频一区二区三区在线观看| 性感美女福利视频| 精品久久久久久中文字幕大豆网 | 中文字幕精品无| 91社区在线播放| 韩日午夜在线资源一区二区 | 偷拍精品精品一区二区三区| 亚洲va国产天堂va久久en| 欧美日韩一级在线| 成人网av.com/| 欧美精品久久天天躁| 久久综合伊人77777麻豆最新章节| 欧美综合自拍| 日韩电影大片中文字幕| 国产精品一区二区人妻喷水| 国语自产精品视频在线看8查询8| 久久久999国产精品| 多男操一女视频| 国产在线精品免费| 91最新在线免费观看| 一区二区 亚洲| 亚洲人成在线播放网站岛国| mm131午夜| 综合激情网...| 精品国产污污免费网站入口 | 婷婷丁香综合网| 久久国产三级精品| 91久久综合亚洲鲁鲁五月天| 国产激情视频在线播放| 亚洲国产精品久久人人爱| 亚洲色成人www永久在线观看 | 国产一区二区三区日韩精品| 国产亚洲日本欧美韩国| 秋霞网一区二区三区| 激情综合五月婷婷| 91手机在线观看| 人人妻人人玩人人澡人人爽| 欧美体内谢she精2性欧美| 日韩欧美精品在线观看视频| 欧美亚洲国产精品久久| 久久精品国产2020观看福利| 国产黄色片在线免费观看| 99r精品视频| 日韩欧美精品一区二区三区经典| 日本亚洲欧洲无免费码在线| 日韩欧美成人午夜| 亚洲男人在线天堂| 日本在线不卡视频| 91在线观看免费高清| 欧美在线精品一区二区三区| 色婷婷av久久久久久久| 亚洲欧美日韩一二三区| 国产精品亚洲欧美| 国产欧美日韩中文字幕在线| 国产999久久久| 色综合天天狠狠| 青娱乐国产精品视频| 久久国产88| 91在线高清视频| 欧美一区国产| 欧美一级二级三级蜜桃| 97伦伦午夜电影理伦片| 国产老肥熟一区二区三区| 久久99精品国产一区二区三区| 99欧美精品| 精品国产免费人成电影在线观看四季| 国产激情在线免费观看| 国产精品亚洲视频| 任我爽在线视频精品一| 91综合精品国产丝袜长腿久久| 亚洲人午夜精品| 久草视频在线资源| 国产精品拍天天在线| 免费不卡av在线| 牛牛国产精品| 国产精品日韩精品| 超碰aⅴ人人做人人爽欧美| 欧美一级理论片| 日韩一级av毛片| 成人性生交大片免费看中文 | 久久精品色欧美aⅴ一区二区| 五月婷婷激情网| 亚洲欧美偷拍卡通变态| 十八禁视频网站在线观看| 在线欧美福利| 91亚洲一区精品| 日本久久二区| 中文字幕欧美国内| 国产成人精品网| 亚洲国产精品嫩草影院| 欧美又黄又嫩大片a级| 免费一级片91| 区一区二区三区中文字幕| 欧美日韩一区二区三区在线电影 | 天堂中文在线官网| 日韩西西人体444www| 一二三四在线观看视频| 日本一区二区三级电影在线观看| 久久久久久久午夜| 伊人久久大香线蕉综合热线| 444亚洲人体| 日韩精品成人在线观看| 久久精品国产清自在天天线| 中文无码精品一区二区三区| 欧美性xxxxx极品| 久久人妻少妇嫩草av无码专区| 国产成人免费在线观看不卡| 中文字幕综合在线观看| 亚洲v在线看| 亚洲一区二区三区久久| 天天综合在线观看| 日韩网站免费观看| 夜夜躁很很躁日日躁麻豆| 欧美日韩一卡二卡三卡 | 亚洲综合清纯丝袜自拍| 国产大片一区二区三区| 国模娜娜一区二区三区| 日本三级福利片| 午夜精品久久| 国产精品久久久久免费| 欧美色资源站| 欧美一级淫片播放口| 一根才成人网| 在线精品播放av| 97caocao| 日韩美女天天操| 日韩成人一区二区三区| 欧美午夜宅男影院在线观看| 新91视频在线观看| 国产精品三级视频| 国产成人强伦免费视频网站| 国产电影一区在线| 午夜免费福利小电影| 裸体素人女欧美日韩| 亚洲精品成人久久久998| 亚洲成人三区| 精品久久久久久中文字幕动漫| 亚洲人成网站77777在线观看| 国产精品国产自产拍高清av水多| 色综合视频一区二区三区日韩| 久久久国产精品亚洲一区| 亚洲第一黄色片| 亚洲精品网址在线观看| 一级黄色免费片| 日韩欧美一区在线| 伊人手机在线视频| 91麻豆精品国产91久久久资源速度| 久久久久香蕉视频| 色哟哟日韩精品| 免费成人深夜夜行网站| 亚洲成国产人片在线观看| 97人妻精品一区二区免费| 亚洲欧洲国产日本综合| 亚洲一区二区三区四区av| 国产欧美视频在线观看| 性生活一级大片| 国产视频不卡一区| 中文字幕永久免费| 国产精品视频一二三| 丰满少妇中文字幕| 久久精品视频网| 亚洲三级在线视频| 久久久久久免费网| 一区二区三区国产好的精华液| 99久久久精品免费观看国产蜜| 亚洲欧美偷拍另类| 久久人人超碰精品| 亚洲欧美日韩中文字幕在线观看| 久久女同精品一区二区| 亚洲综合中文网| 成人欧美一区二区三区黑人麻豆| 欧美无人区码suv| 亚洲精品国产第一综合99久久 | 国产成人在线综合| 99国产精品久久久| 精品人妻一区二区乱码| 国产精品无人区| 老司机福利av| 亚洲丶国产丶欧美一区二区三区| 无码人中文字幕| 在线观看一区二区精品视频| 国产无精乱码一区二区三区| 7777精品久久久大香线蕉| 手机看片久久久| 亚洲国产精品人人爽夜夜爽| 国产精品国产三级国产普通话对白 | 久久久久久久久久久影视| 中文在线资源观看网站视频免费不卡| 国产精品麻豆入口| 亚洲国产中文字幕| 全网免费在线播放视频入口 | 欧美一级特黄aaaaaa大片在线观看| 色婷婷综合成人av| 亚洲成人一区在线观看| 91av在线网站| 男人的天堂久久| 国产精品我不卡| 精品91久久久久| 男人添女荫道口喷水视频| 国产麻豆精品theporn| 亚洲人视频在线| ...av二区三区久久精品| www.日本高清视频| 欧美视频中文字幕| 亚洲黄网在线观看| 亚洲欧洲一区二区三区久久| 亚洲一二三四| 琪琪第一精品导航| 免费成人高清在线视频theav| 国产一区免费观看| 中文欧美日韩| av免费观看网| 久久综合九色综合欧美98 | 天天天天天天天天操| 欧美一区二区视频在线观看2020 | 男女视频在线观看网站| 久久久久久久电影| 538国产视频| 色婷婷一区二区三区四区| 国产三级精品三级在线观看| 亚洲欧美日韩精品| 亚洲精品555| 成人免费在线视频网址| 中文视频一区| 日韩免费在线观看av| 菠萝蜜视频在线观看一区| 一级特黄a大片免费| 精品国产乱码久久久久久婷婷 | 欧美色网站导航| 91av国产精品| 欧美激情视频一区二区| 网友自拍一区| 亚洲成人自拍| 国产成人啪免费观看软件| 欧美xxxx×黑人性爽| 日韩欧美在线字幕| 一级爱爱免费视频| 欧美激情2020午夜免费观看| 天堂一区二区三区四区| 日本一区二区在线| 国产伦精品一区二区三区视频青涩 | 国产91亚洲精品久久久| 国产在线观看91精品一区| 欧美先锋影音| 欧美三级午夜理伦三级| 国产精品欧美综合在线| 激情综合五月网| 亚洲热线99精品视频| 亚洲一区二区三区久久久| 国产精品久久亚洲7777| 日韩成人av影视| 亚洲欧美激情一区二区三区| 欧美日韩性生活视频| 亚洲天堂男人网| 97精品一区二区视频在线观看| 精品色999| 国产不卡一区二区视频|