Comment puis-je obtenir une image sur la toile afin de dessiner sur cette image?Image à dessiner sur une toile
Répondre
essayer cette
Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
Vous devez charger votre image bitmap:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
ensuite faire le bitmap mutable et de créer une toile au-dessus:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
Vous pouvez ensuite peut dessiner sur la toile.
Que faire si mon .png est grand et il se coupe après avoir été chargé ? c'est-à-dire que je ne veux pas l'avoir recadrée. Il peut être plus grand que l'écran, alors je vais essayer de le rendre zoomable et mobile. Comment puis-je faire ça? Merci beaucoup! –
@ perfectionm1ng regarde en utilisant BitmapRegionDecoder. Il permet un chargement partiel pour les grandes images. Vous ne devriez donc pouvoir charger que la partie de l'image que vous affichez en ce moment. –
J'ai le même problème J'utilise le code Canvas cs = new Canvas (bitmap); Ressources res = getResources(); Bitmap bitmapx = BitmapFactory.decodeResource (res, R.drawable.overlay_good_full); Bitmap bitmapxx = BitmapFactory.decodeResource (res, R.drawable.overlay_bad_full); si (text.equals ("Bon")) { cs.drawBitmap (bitmapx, 0, 0, tPaint); } sinon { cs.drawBitmap (bitmapxx, 0, 0, tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
créer un nouvel objet Paint dans onDraw est mauvais pour la performance –
okay thnks .. j'ai hve mis à jour la réponse – user1140237
Je ne suis pas sûr que vous devez charger l'image bitmap que votre code (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29) utilise Drawable.draw(Canvas c)
.
La bonne façon de dessiner un Drawable sur une toile est pas le décodage vous, mais en laissant au système de le faire:
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Cela fonctionne avec toutes sortes de dessinables, non seulement bitmaps. Et cela signifie aussi que vous pouvez réutiliser ce même dessin si seulement la taille change.
Comment utilise-t-on une animation-liste (images multiples) pour l'animation avec l'approche de la toile? – RichieHH
Très utile! Au moins quand vous avez besoin d'une image de fond sans science de fusée impliqué! – Asim
@RichieHH J'ai mes antécédents sur un SurfaceView (propably un gaspillage) et cette vue de surface est intégrée dans un Framelayout et que framelayout contient ImageViews que j'anime alors - c'est peut-être une option pour vous? – AgentKnopf
également vous pouvez utiliser de cette façon. il va changer votre grand ajustement drawble à votre toile:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
La classe BitmapFactory n'a pas la méthode "BitmapFactory.decodeResource (Resource, Drawable);" ... – Crisic
@Crisic Je suppose que 'yourDrawable' est un nombre entier. –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Je crée Drawable avec gerResource(). GetDrawable (id); – Vikram
getDrawable (id) est en cours d'abandon, vous devez utiliser l'appel ContextCompat ci-dessus ou l'appel getDrawable (id, theme). https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) – wblaschko
Pour moi, il était nécessaire d'utiliser 'setBounds'. Sans cela, rien n'a été affiché. –
- 1. Dessiner un objet/une image sur une toile
- 2. Dessiner une image sur une toile dans l'application de métro
- 3. comment dessiner une image sur une toile avec transparence/alpha
- 4. CoreGraphics dessiner une image sur une toile blanche
- 5. comment charger une nouvelle image et dessiner sur la toile?
- 6. Comment dessiner l'animation sur une toile? (Android)
- 7. Dessiner sur une toile un gros pixels
- 8. dessiner une forme transparente sur la toile
- 9. Comment mettre une toile sur une image?
- 10. Dessiner sur une image
- 11. Toile pure dessiner vs png image
- 12. dessiner du texte "ellipsisé" sur une toile
- 13. HTML 5 Toile dessiner l'image sur l'autre image
- 14. Dessiner un tableau sur une toile
- 15. Comment dessiner un JPanel sur une toile?
- 16. Comment dessiner plusieurs bitmaps sur une toile
- 17. Dessiner à une image
- 18. Dessiner un bitmap sur une toile avec une forme personnalisée
- 19. comment dessiner une petite image dans la toile dans android
- 20. Comment dessiner une boîte de sélection sur une toile SWT?
- 21. Dessiner sur toile dans Android
- 22. comment dessiner image sprite en utilisant une toile?
- 23. Dessiner un dessin sur une image bitmap
- 24. Toile Android - Dessiner un rectangle ou une image d'un rectangle
- 25. HTML5 TOILE dessiner l'image
- 26. OpenCV: Dessiner sur une image
- 27. Créer une image sur une toile
- 28. Dessiner avec une toile sur une vue, mais rien peint
- 29. Dessiner un png sur un autre png dans une toile
- 30. Dessiner une image sur une toile d'une vue ne fait rien
Mais si j'utilise canvas.drawBitmap (mBitmap, 0, 0, mBitmapPaint); cela fonctionne et il charge l'image enregistrée sur le canevas, mais en même temps annuler et refaire arrêter de travailler, Vérifiez mon code http://pastebin.com/cP9w6stm – AndroidDev