パス

2011-08-11 1 views
1

てキャンバス上に三角形を描画する方法アンドロイド私は三角形のサイズが固定であることを意味し、怒鳴るように、パス

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_downでタッチイベントの三角形を描くことができています。

しかし、キャンバス上を移動する場合、三角形のサイズを増減する必要があります。 どうすればいいですか? giv me a way。 ありがとう

+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

どうすればいいのですか? – Jyosna

+0

OpenGLを使用しています。 – Jyosna

+0

因子の計算はあなた次第です。それはあなたの必要性にかかっています。たとえば、距離が100ピクセルのピンチ(ズームアウト)の場合、係数は1/10になります。フォーミュラは因子=(平均ピンチ距離/ 10.0f)となる。しかし、私が言及したように、これは正確ではありません。 「実世界」の視点を持つには、3D API(OpenGLなど)を使用してください。 – rockeye