2011-08-03 3 views
2

Dans mon application, je suis capable de dessiner quelque chose sur la toile dans l'événement tactile.android Comment dessiner des cercles, des rectangles sur toile?

Mais le problème est, à la fois un seul élément peut être dessiné dans l'événement tactile. signifie que si je vais mettre lineto() et moveto() alors il va tracer des lignes. si addCircle() ll est donné alors cercle dessiné.et aussi pour Rect et ovale.

Mais je veux donner des boutons différents pour ça. Par défaut, la ligne sera dessinée. Si j'appuie sur Cercle, le cercle sera dessiné, si le bouton Rect est pressé, Rectangle dessine sur le canevas en utilisant le même événement tactile.

Donc, je veux savoir ce que je vais écrire sous les événements tactiles afin qu'il fonctionne pour chaque clic de bouton? Donnez-moi un moyen. Merci

+0

Avez-vous fait quelque chose pour changer la couleur de chaque élément de dessin comme une ligne ou un cercle ou quoi que ce soit? Si oui, répondez ici. –

Répondre

2
//THESE ARE GLOBAL! 
boolean isDrawing = false; 
boolean circle = true; //default 
boolean rect = false; 
boolean line = false; 

Créer trois boutons:

Button circleB,rectB,lineB; 

En circleB (onClick):

boolean circle = true; //set circle to true 
boolean rect = false; 
boolean line = false; 

En rectB (onClick):

boolean circle = false; 
boolean rect = true; //set rect to true 
boolean line = false; 

En lineB (onClick):

boolean circle = false; 
boolean rect = false; 
boolean line = true; //set line to true 

Pour la taille du cercle:

//Global 
int size = 10; //Default: 
boolean isScaling=false; 

public boolean onTouch(View arg0, MotionEvent e) { 
switch(e.getAction()){ 
    case(MotionEvent.ACTION_DOWN): 
     isScaling=true; 
    break; 
    case(MotionEvent.ACTION_MOVE): 
     if(isScaling){ 
      size++; //increment as you want 
     } 
    break; 
    case(MotionEvent.ACTION_UP): 
     isScaling=false; 
     if(!isDrawing){ 
      isDrawing=true; 
      if(circle) 
      { 
       //code to Draw Circle 
      } 
      else if(rect) 
      { 
       //code to Draw Rect 
      } 
      else if(line) 
      { 
       //code to Draw line 
      } 
      isDrawing=false; 
     } 
     //reset size I think it is better to reset it 
    break; 
    } 
} 
+0

Merci pour votre réponse. J'ai fait comme ça seulement mais ça ne fonctionne pas correctement. Est-ce qu'il y a un autre moyen? –

+0

J'ai édité et ajouté «boolean isDrawing» .pouvez-vous me dire quel est le problème? –

+0

Encore une chose que je veux savoir à chaque fois que le rayon du cercle est le même, donc la même taille de cercle est dessinée ici. Mais je veux si je touche et bouge alors la taille du cercle va augmenter et si retouche puis cercle de dernière taille apparaîtra là. Comment puis-je le faire? –

0

Je ne suis pas sûr de comprendre correctement de quoi vous parlez. Mais si je le fais, cela pourrait être fait avec les méthodes canvas.drawCircle, canvas.drawRect.

+0

Ya je sais. J'utilise le chemin. et dans le chemin de la ligne path.lineto() & path.moveto() est là. Pour le cercle path.addcircle() est là. Mais je veux savoir comment puis-je ajouter différemment sur un clic de bouton? –

+0

signifie pour Touch_down, touch_move, & touch_up y at-il na? Donc, si je vais écrire path.lineto(), path.moveto(), path.addcircle(), alors il va à la fois ajouter. Mais je veux si j'appuie sur le bouton de cercle alors il dessine seulement le cicle pas la ligne –

Questions connexes