Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Dibujar un mapa de bits a escala en el lienzo?

El código siguiente define mi mapa de bits:

Resources res = context.getResources(); mBackground = BitmapFactory.decodeResource(res, R.drawable.bg2); //scale bitmap int h = 800; // height in pixels int w = 480; // width in pixels Bitmap scaled = Bitmap.createScaledBitmap(mBackground, w, h, true); // Make sure w and h are in the correct order 

… Y el siguiente código se utiliza para ejecutar / dibujar (el mapa de bits sin escala):

 c.drawBitmap(mBackground, 0, 0, null); 

Mi pregunta es, ¿cómo puedo configurarlo para dibujar el mapa de bits a escala devuelto en forma de "Bitmap escalado", y no el original?

2 Solutions collect form web for “Dibujar un mapa de bits a escala en el lienzo?”

Definir una nueva variable de miembro de clase: Bitmap mScaledBackground; A continuación, asigne el mapa de bits escalado recién creado a él: mScaledBackground = scaled; A continuación, llame a su método de dibujo: c.drawBitmap(mScaledBackground, 0, 0, null);

Tenga en cuenta que no es una buena idea codificar el tamaño de la pantalla de la forma en que lo hizo en el fragmento anterior. Mejor sería buscar el tamaño de la pantalla del dispositivo de la siguiente manera:

 int width = getWindowManager().getDefaultDisplay().getWidth(); int height = getWindowManager().getDefaultDisplay().getHeight(); 

Y probablemente sería mejor no declarar un nuevo mapa de bits con el único propósito de dibujar su fondo original de una manera escalada. Los mapas de bits consumen una gran cantidad de recursos preciosos y, por lo general, un teléfono se limita a unos pocos MB de mapas de bits que puede cargar antes de que su aplicación falle desgraciadamente. En su lugar podría hacer algo como esto:

 Rect src = new Rect(0,0,bitmap.getWidth()-1, bitmap.getHeight()-1); Rect dest = new Rect(0,0,width-1, height-1); c.drawBitmap(mBackground, src, dest, null); 

Para dibujar el mapa de bits escalado que desea guardar su mapa de bits a escala en un campo en alguna parte (aquí se llama mScaled) y llame a:

  c.drawBitmap(mScaled,0,0,null); 

En su método de dibujo (o dondequiera que lo llame ahora mismo).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.