Comment obtenir une image sur le canevas afin de pouvoir dessiner sur cette image ?
Comment utiliser une liste d'animation (plusieurs images) pour l'animation avec l'approche du canevas ?
Comment obtenir une image sur le canevas afin de pouvoir dessiner sur cette image ?
La bonne façon de dessiner un Drawable sur un canevas n'est pas de le décoder soi-même mais de laisser au système le soin de le faire :
Drawable d = getResources().getDrawable(R.drawable.foobar, null);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Cela fonctionnera avec tous les types de dessinables, pas seulement les bitmaps. Et cela signifie également que vous pouvez réutiliser le même tableau si seule la taille change.
Comment utiliser une liste d'animation (plusieurs images) pour l'animation avec l'approche du canevas ?
Très utile ! Au moins quand vous avez besoin d'une image d'arrière-plan sans avoir à faire appel à la science.
@RichieHH J'ai mon arrière-plan sur une SurfaceView (probablement un gaspillage) et cette vue de surface est intégrée dans un Framelayout et ce framelayout contient des ImageViews que j'anime ensuite - peut-être est-ce une option pour vous ?
Vous devez charger votre image en tant que bitmap :
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
Ensuite, rendez le bitmap mutable et créez un canevas par-dessus :
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
Vous pouvez alors dessiner sur la toile.
Que faire si mon .png est grand et qu'il est coupé après avoir été chargé ? c'est-à-dire que je ne veux pas qu'il soit coupé. Il peut être plus grand que l'écran, alors je vais essayer de le rendre zoomable et déplaçable. Comment puis-je faire cela ? Merci beaucoup !
@perfectionm1ng regardez si vous pouvez utiliser BitmapRegionDecoder. Il permet un chargement partiel pour les grandes images. Vous devriez donc être en mesure de charger uniquement la partie de l'image dont vous effectuez le rendu en ce moment.
J'ai le même problème J'utilise le code Canvas cs = new Canvas(bitmap) ; Resources res = getResources() ; Bitmap bitmapx = BitmapFactory.decodeResource(res, R.drawable. overlay_good_full) ; Bitmap bitmapxx = BitmapFactory.decodeResource(res, R.drawable.overlay_bad_full) ; if(text.equals("Good")) { cs.drawBitmap(bitmapx, 0, 0, tPaint) ; } else { cs.drawBitmap(bitmapxx, 0, 0, tPaint) ; }
GetDrawable(id) est déprécié, vous devez utiliser soit l'appel ContextCompat ci-dessus, soit l'appel getDrawable(id, theme). developer.Android.com/reference/Android/content/res/
Mais si j'utilise canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint) ; cela fonctionne et charge l'image sauvegardée sur le canvas, mais en même temps undo et redo ne fonctionnent plus, Vérifiez mon code pastebin.com/cP9w6stm
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.