2013-01-05 2 views
1

D'abord, je veux dire que je lis vraiment beaucoup, mais je ne trouve pas exactement ce problème ...Android: couper une partie hors d'un bitmap et agrandissez

Au moment mon code ne fonctionne. J'ai un bitmap, puis je coupe une partie de mon bitmap et dessine ça.

this.card = new ImageView(this); //this is my ImageView 
//and my bitmap... 
this.bmCards = BitmapFactory.decodeResource(getResources(), R.drawable.cardgame); 

//and here I set the bitmap as Image of this ImageView 
this.card.setImageBitmap(getCard(Stapel.getCard())); 

la méthode, que l'on appelle est la suivante:

private Bitmap getCard(Card c) { 

    //some arithmetic to calculate the size... 

    Bitmap result = Bitmap.createBitmap(cardW, cardH, Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(result); 
    canvas.drawBitmap(bmCards, new Rect(x, y, x + cardW + toleranzW, y + cardH + toleranzH), 
      new Rect(0, 0, cardW, cardH), new Paint()); 

    return result; 
} 

jusqu'à présent, il fonctionne .. mais comment pourrais-je redimensionner cette image? Je veux dire sur la toile que je dessine la partie droite du Bitmap mais je veux redimensionner un peu cette partie, parce qu'elle est trop petite ... peut-être versH * 1,5 et actualW * 1,5 ou quelque chose comme ça.

Répondre

2

Je pense que vous pouvez utiliser ceci:

Matrix matrix = new Matrix(); 
matrix.postScale(scaleWidth, scaleHeight); 
resizedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), 
       originalBitmap.getHeight(), matrix, false); 

et après que vous obtenez le bitmap redimensionnée vous pouvez dessiner sur la toile ..

EDIT

S'il vous plaît essayer ce .. Je n'ai pas essayé ... tu devrais jouer avec les valeurs comme je t'ai écrit dans les commentaires .. et aussi tu devrais lire les documentations createBitmap() et postScale() pour savoir ce que tu fais là :)

private Bitmap getCard(Card c) { 

    //some arithmetic to calculate the size... 

    Bitmap result = Bitmap.createBitmap(cardW, cardH, Bitmap.Config.ARGB_8888); 

    Matrix matrix = new Matrix(); 
    matrix.postScale(20, 20); 
    result = Bitmap.createBitmap(result, 0, 0, result.getWidth(), 
        result.getHeight(), matrix, false); 

    Canvas canvas = new Canvas(result); 
    canvas.drawBitmap(bmCards, new Rect(x, y, x + cardW + toleranzW, y + cardH + toleranzH), 
      new Rect(0, 0, cardW, cardH), new Paint()); 

    return result; 
} 
+0

oui .. J'ai vu quelque chose comme ça .. mais je ne sais pas vraiment ce que je devrais prendre, parce que je coupe et dessine en même temps et je ne sais pas vraiment quelle taille je devrais donner pour "résultat" ma toile est créée avec "résultat" –

+0

Je comprends de votre question que vous voulez redimensionner le bitmap à une taille spécifique .. est-ce correct? Si c'est le corect alors jouez juste un peu avec les scaleWidth et scaleHeight jusqu'à ce que vous obteniez ce que vous voulez .. si je n'ai pas bien compris, soyez plus précis sur ce que vous voulez .. :) – Cata

+0

pourriez-vous peut-être adapter votre exemple à mon code, parce que j'ai vu quelque chose comme vous avez écrit avant, mais je ne sais pas exactement comment l'utiliser dans mon code .. dans ce cas, j'ai coincé un peu –

2

Utilisez une matrice pour effectuer les translations & avant de dessiner. C'est généralement le moyen le plus simple.

Questions connexes