從繪製圓弧思考定位

2021-08-27 07:18:26 字數 1190 閱讀 3774

如下圖所示,我想在螢幕的在150*150的小矩形中間畫乙個畫弧。開始的時候我會去考慮

150*150的居中顯示的圓心怎麼拿到啊?是不是要根據手機尺寸來計算?半徑也要自己去指

定。按這個計算來說,圓心座標為(160,240),半徑為75,但我見到的**讓我對這個想法

產生的懷疑。

下面的自定義view**中getwidth()=225,getheight=225,我開始很奇怪,getwidth和

getheight()得到的不是手機的尺寸嗎?怎麼會是這麼個奇怪的值啊?寬高一樣的!!

後來我猜想,因為在xml配置檔案中我設定的view為150*150dip,(對於hvga)轉化成畫素

就是225pix。也就是150dip=225pix-->1dip=1.5pix。

接著又有奇怪的事情:

radialgradient rg = new radialgradient( x, y, y, color.argb(255, 255, 0,

0),color.argb(255, 0, 255, 0), tilemode.clamp);//漸變

上面**表明x = 1/2getwidth() == 112.5,y=1/2getheigth()=112.5就是我們的圓心。

這與我們當時算的(160,240)是圓心不相符啊。另外,半徑竟然和x,y相等。也就是說只

有這包含這個圓的矩形是從(0,0)-->(a,a)的才有可能圓心座標值和半徑值相等。

為什麼這麼奇怪的設座標設定卻能畫出我要的東西呢?我的理解是,對於自定義view來

說,如果在xml中指定了它的尺寸和位置。那麼在view內部它的座標軸不再是整個手機螢幕

了,而是給指定的那塊區域。比如上面的例子:

給自定義view在手機的某個區域分配了乙個150dip*150dip(225pix*225pix)的區域,然後

在自定義view內部,這個區域就是它的全部。getwidth就是225,裡面的內切圓圓心也就為

(getwidth()/2,getheight()/2),內切圓的半徑也就為getwidth()或getheight()。這樣的

相對座標使我們定位更容易一些。

canvas 繪製圓弧

處理資料 let plan let zhanxian let chengjiao let x 200 let y 200 data.foreach d,i let datas zhanxian,chengjiao datas迴圈 datas.foreach arr,m else function d...

使用canvas繪製圓弧動畫

對於canvas的繪製,首先需要在html內指定一塊畫布,即,可以看做是在ps中新建乙個空白文件,之後所有的操作都將呈現在這個文件之上,與ps的區別是,canvas本身沒有圖層的特性,當需要展示不同維度的檢視時,需要交由html的位置關係來解決。canvas標籤上,值得一提的就是width和heig...

16 canvas繪製圓弧

1 doctype html 2 html lang en 3 head 4 meta charset utf 8 5 title 16 canvas繪製圓弧 title 6 style 7 11canvas 16style 17head 18 body 19 canvas width 500 he...