J'essaie de développer une application sur le canevas, je dessine un bitmap sur le canevas.Après le dessin, j'essaie de convertir en image bitmap.
quelqu'un peut-il me donner une suggestion.
merci d'avance.
Les conseils dépendent de ce que vous essayez de faire.
Si vous craignez que vos contrôles prennent beaucoup de temps à dessiner et que vous souhaitiez dessiner sur un bitmap afin de pouvoir blit le bitmap plutôt que de redessiner via un canevas, alors vous don ' t veut deviner la plate-forme - les contrôles mettent automatiquement en cache leur dessin dans des bitmaps temporaires, et ceux-ci peuvent même être récupérés à partir du contrôle en utilisant getDrawingCache()
Si vous souhaitez dessiner en utilisant un canevas sur un bitmap, la recette habituelle est:
Bitmap.createBitmap()
Canvas(Bitmap)
Vous créez donc un nouveau Bitmap
, par exemple:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )
width
et height
étant les mêmes que votre toile.
Ensuite, utilisez canvas.setBitmap(myBitmap)
, mais pas drawBitmap()
.
Après avoir appelé setBitmap
, tout ce que vous dessinez sur le canevas est en fait, dessiner sur votre myBitmap
en suivant l'exemple de code que j'ai illustré.
Modifier :
Vous ne pouvez pas créer directement un bitmap tel que:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );
Vous devez utiliser à la place:
Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
Autre exemple:
public Bitmap getBitmapNews(int item , boolean selected, int numbernews){
Bitmap bitmap;
if(selected)
bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true);
else
bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);
if(numbernews<10){
canvas.drawBitmap(mNotiNews[numbernews],0,0,null);
}else{
canvas.drawBitmap(mNotiNews[0],0,0,null);
}
return bitmap;
}
Voici les étapes pour convertir du canevas en bitmap et le stocker dans une galerie ou un dossier spécifique.
Remarque: assurez-vous que vous avez donné l'autorisation de WRITE_EXTERNAL_STORAGE
activity_main.xml
<LinearLayout
Android:id="@+id/linearLayout"
Android:orientation="horizontal"
Android:layout_margin="10dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<DrawingView
Android:id="@+id/drawingView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.Java
Créer une référence de la disposition parent
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
Pour le stocker dans la galerie
final String imagename = UUID.randomUUID().toString() + ".png";
MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
Pour convertir en bitmap
linearLayout.setDrawingCacheEnabled(true);
linearLayout.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());