2011-08-11 59 views
1

在畫布上畫三角形,我能夠繪製在ACTION_DOWN觸摸事件三角形,像波紋管,機器人如何通過路徑

path.moveTo(motionEvent.getX(), motionEvent.getY()); 
path.lineTo(motionEvent.getX()-40, motionEvent.getY()+60); 
path.lineTo(motionEvent.getX()+40, motionEvent.getY()+60); 
path.lineTo(motionEvent.getX(), motionEvent.getY()); 

這意味着三角形的大小是固定。

但是我想在Action_Move中,如果在畫布上移動,三角形的大小應該增大或減小。 我該怎麼做? 給我一個方法。 謝謝

+0

我做了它沒有使用任何API – Jyosna

回答

1

應用一個簡單的affine transformation或簡單地homothety給你三角形。

我想你想放大/縮小未扣捏。假設你的縮放方法計算一個因素。

然後用這個因子繪製你的三角形。例如:

path.moveTo(motionEvent.getX(), motionEvent.getY()); 
path.lineTo(motionEvent.getX()-40*factor, motionEvent.getY()+60*factor); 
path.lineTo(motionEvent.getX()+40*factor, motionEvent.getY()+60*factor); 
path.lineTo(motionEvent.getX(), motionEvent.getY()); 

當然,這是最微不足道的實現。爲了產生更逼真的效果,你將不得不使用perspective projection。在這種情況下,您應該使用OpenGL並在3D中繪製三角形。

+0

我怎麼能得到這個因素,PLZ解釋我。 – Jyosna

+0

我使用OpenGL。 – Jyosna

+0

因素計算取決於您。這取決於你的需要。例如,您可能希望對於距離爲100px的縮放(縮小時),該因子將爲1/10。 Formaula的因子=(平均捏距/ 10.0f)。但正如我所提到的,這遠不是確切的。要擁有「真實世界」的視角,請使用3D API(例如OpenGL) – rockeye