2011-08-11 3 views
1

Je suis en mesure de dessiner un triangle pour l'événement touche à Action_down, comme ci-dessous,android comment dessiner triangle sur une toile par le chemin

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()); 

qui signifie la taille du triangle est fixe.

Mais je veux dans Action_Move la taille du triangle doit être augmenter ou diminuer si déplacer sur la toile. Comment puis-je faire cela? donnez-moi un moyen. Merci

+0

Je l'ai fait sans utiliser d'API – Jyosna

Répondre

1

Appliquez un simple affine transformation ou simplement un triangle homothety.

Je suppose que vous voulez zoomer/dézoomer un pincement. Supposons que votre méthode de zoom calcule un facteur. Dessinez ensuite votre triangle en utilisant ce facteur. Par exemple:

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()); 

Bien sûr, c'est l'implémentation la plus triviale. Pour produire des effets plus réalistes, vous devrez utiliser un perspective projection. Dans ce cas, vous devez utiliser OpenGL et dessiner votre triangle en 3D.

+0

Comment puis-je obtenir ce facteur, s'il vous plaît expliquez-moi. – Jyosna

+0

Je n'utilise pas OpenGL. – Jyosna

+0

Le calcul du facteur est à vous. Cela dépend de votre besoin. Par exemple, vous pourriez vouloir que pour une pincée dont la distance est 100px (alors que le zoom arrière), le facteur serait 1/10. la formaula serait facteur = (distance de pincement moyenne/10.0f). Mais comme je l'ai mentionné, c'est loin d'être exact. Pour avoir une perspective "monde réel", utilisez une API 3D (par exemple OpenGL) – rockeye

Questions connexes