2011-10-24 3 views
3

J'ai un bitmap et je dessine comme ceci:comment mettre DrawBitmap à ne pas fullscreen

bit = BitmapFactory.decodeResource(getResources(), 
        R.drawable.anim_ctrl_panel); 
Paint paint = new Paint(); 
canvas.drawBitmap(bit, 80, 440, paint); 

Le problème est que l'image est définie comme méthode .Sur onTouchEvent fullscreen je mets en œuvre l'événement pour le bitmap et partout où je sélectionne l'écran, l'événement est implémenté. Je veux que l'image ait une certaine position et seulement pour que cette position soit implémentée l'événement. Comment puis-je faire ceci?

EDIT: le problème était lié à la méthode onTouchEvent. Voici la solution:

public boolean onTouchEvent(MotionEvent event) {if(80 <= event.getX() && event.getX()<= (80+bit.getWidth()/2) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){ 
      //... 
     }else if((80+bit.getWidth()/2) <= event.getX() && event.getX()<= (80+bit.getWidth()) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){ 
      //... 
      } 

cela me aider: How can I check the Image is Touched using OnTouch()

Répondre

1

Pour l'image situé dans le quartier particulier, je pense que Rectangle est utile pour cela,

Quelque chose comme ça, (Dans mon cas Son travail pour moi)

Canvas canvas = new Canvas(bitmap); 
final Paint paint = new Paint();   
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());   
paint.setAntiAlias(true);   
canvas.drawARGB(0, 0, 0, 0);   
canvas.drawBitmap(bitmap, rect, rect, paint); 

Essayez-le.

Pour plus d'informations regarder Android - Drawing (Core)

Merci.

+0

Je reçois le même chose ... je pense que mon problème est la méthode onTouchEvent ... là je mets seulement ceci: if (event.getX()> bit.getWidth()/2) et je devrais mettre une condition pour y aussi, non? – Gabrielle

+0

Créez un objet ImageView spécifique et, à l'aide du rectangle et du canevas, fixez la hauteur et la largeur (selon vos besoins), puis implémentez onTouch pour cette vue perticluar. (Comme je comprends votre question). Merci. – user370305

+0

ou faire un calcul, getX tout getY pour le toucher et faire si la condition de vérifier si elle est dans les coordonnées de votre rectangle de l'image puis faire wahtever vous voulez. – user370305

1

Essayez ceci:

canvas.save(); 
canvas.translate(posX, posY); 
canvas.drawBitmap(bit, 0f, 0f, paint); 
canvas.restore(); 
+0

ce code fait la même chose que mon code – Gabrielle

+0

Vraiment c'est similaire, mais ça devrait marcher. J'essaye aussi de limiter la zone où tu veux dessiner. http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint) – vicentazo