2013-05-30 7 views
0

J'ai cette fonction, avec cette fonction je peux montrer une image avec un peu de rotation. J'essaie d'afficher une bordure blanche autour de l'image bitmap.Bitmap Android avec bordure

Matrix m = new Matrix(); 
     m.postRotate(rotation, center.x, center.y); 
     m.postTranslate((position.x - center.x) - xOffset , position.y - (center.x)); 

     // set the current position to the updated position 
     positionMatrix.set(m);    
     renderAnimation();   
     c.drawBitmap(this.bitmap , positionMatrix, paint); 

Je suis en train d'ajouter la bordure blanche avec cette fonction: référence: stackoverflow border

RectF targetRect = new RectF(left+10, top+10, left + scaledWidth, top + scaledHeight); 
    Bitmap dest = Bitmap.createBitmap(this.bitmap.getWith() +20, this.bitmap.getHeight() +20, this.bitmap.getConfig()); 
    Canvas canvas = new Canvas(dest); 
    canvas.drawColor(Color.WHITE); 
    canvas.drawBitmap(this.bitmap, null, targetRect, null); 
c.drawBitmap(this.bitmap , positionMatrix, paint); 

Mais, pas les œuvres, certains peuvent me aider

Répondre

3

Je pense que vous devez suivre ces étapes :

  1. Créez un bitmap de largeur = yourImageWidth + boderThick et height = yourImageHeight + boderThick
  2. Toile dessiner un rectangle blanc (dessiner votre fond d'abord)
  3. Toile dessiner votre image (vous devez centrer votre image)

Peut-être que vous avez fait une erreur lors du calcul du côté, ou dessiner dans un mauvais commande. N'oubliez pas d'utiliser la même toile lors du dessin. Dans votre code, je vois que vous utilisez c.draw et canvas.draw ... Cela peut causer le problème.

Référez au code ci-dessous:

Paint paint = new Paint(); 
paint.setColor(Color.WHITE); 
paint.setStrokeWidth(3); 
canvas.drawRect(0, 0, 200, 200, paint);//draw your bg 
canvas.drawBitmap(bitmap, 20, 20, paint);//draw your image on bg 

Désolé, je n'ai pas beaucoup de temps pour vérifier votre taille calculée. J'espère que cela peut aider.

+0

@NgyenDoanTung bien, mon problème est peut-être: Bitmap bmpWithBorder = Bitmap.createBitmap (this.bitmap.getWidth() + 10 * 2, this.bitmap.getHeight() + 10 * 2, this.bitmap.getConfig()); Canvas canvas = nouveau Canvas (bmpWithBorder); canvas.drawColor (Color.WHITE); canvas.drawBitmap (this.bitmap, 10, 10, null); // il s'agit de la bordure blanche c.drawBitmap (this.bitmap, positionMatrix, paint); // image originale comment puis-je savoir si la toile est jointe? – MrMins

+0

Veuillez vous référer à la réponse éditée. J'espère que ça peut aider. –

+0

@NgyenDoanTung merci, j'ai résolu mon problème. Merci – MrMins