Image pouvant être dessinée sur une canvas

Comment puis-je obtenir une image sur la canvas afin de dessiner sur cette image?

Le bon moyen de dessiner un Drawable sur un canevas n’est pas de le décoder vous-même, mais de le laisser faire au système:

Drawable d = getResources().getDrawable(R.drawable.foobar); d.setBounds(left, top, right, bottom); d.draw(canvas); 

Cela fonctionnera avec toutes sortes de tirables, pas seulement des bitmaps. Et cela signifie également que vous pouvez réutiliser ce même dessinable si seulement la taille change.

Vous devez charger votre image en tant que bitmap:

  Resources res = getResources(); Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image); 

Ensuite, modifiez le bitmap et créez un canevas dessus:

 Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true)); 

Vous pouvez alors dessiner sur la canvas.

vous pouvez également utiliser cette façon. il va changer votre grande taille de tirage sur votre canvas:

 Resources res = getResources(); Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable); yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint); 
 Drawable d = ContextCompat.getDrawable(context, R.drawable.***) d.setBounds(left, top, right, bottom); d.draw(canvas); 

essaye ça

 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); } 
 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); } } 

Je ne suis pas sûr que vous ayez à charger l’image en tant que bitmap comme 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) .