Cómo mosaico de un mapa de bits en una lona

Me gustaría crear un aspecto de papel gráfico para el mapa de bits que estoy dibujando a través de un lienzo, y tratando de averiguar la mejor manera de hacer esto.

No puedo pasar un mapa de bits de origen que contenga el fondo de gráfico para el constructor de lienzo, ya que estoy recibiendo el lienzo en un SurfaceView a través de la llamada .lockCanvas ().

Algunas soluciones que he probado:

  • He intentado implementar esta solución en Thread.run () de mi SurfaceView, pero el problema que creo es cuando el BitmapDrawable se convierte en un mapa de bits … pierde las propiedades de mosaico.

    Canvas = mSurfaceHolder.lockCanvas (null); BitmapDrawable TileMe = new BitmapDrawable (BitmapFactory.decodeResource (getResources (), R.drawable.editor_graph)); TileMe.setTileModeX (Shader.TileMode.REPEAT); TileMe.setTileModeY (Shader.TileMode.REPEAT);

    Bitmap b = TileMe.getBitmap (); Canvas.drawBitmap (b, 0, 0, null);

  • Si utilizo el método Canvas.drawBitmap que toma un destino RectF como un parámetro , parece que el mapa de bits se mosaico para rellenar el RectF … pero ¿cómo puedo declarar un RectF de forma fiable que llena todo el área de vista?

  • También no funciona el ajuste del fondo de las actividades a la apariencia de papel gráfico deseada, ya que el diseño de mapa de bits / lienzo es opaco y bloquea su visualización.

¿Alguna idea de cómo lograrlo?

Usted tiene dos soluciones fáciles:

  • Utilice un BitmapDrawable, pero en lugar de extraer el Bitmap, simplemente llame a BitmapDrawable.draw (Canvas). No olvide establecer los límites del dibujable para llenar su área de dibujo.
  • Crear una pintura con un BitmapShader y dibujar un rectángulo con él (esto es básicamente lo que hace BitmapDrawable).

Estoy seguro de que hay una manera de obtener un efecto de mosaico con un SurfaceView . Desafortunadamente, parece que no puede utilizar el BitmapDrawable con un lienzo. Por lo que probablemente tendría que implementar su propio método de mosaico personalizado mediante la creación de su propia serie de Rect 's en el Canvas y el dibujo de un mapa de bits a escala de cada uno.

Sinceramente, no sería tan difícil. Basta con obtener la anchura / altura de la vista, y crear una matriz de Rect 's sobre la base de estos datos que va a dibujar el Bitmap de Bitmap .

Alternativamente, si usted no necesita hacer modificaciones al fondo de mosaico real sobre la marcha, sólo dibujar como un fondo y dibujar el SurfaceView en la parte superior de la misma. Ese mensaje que enlazó proporcionó múltiples soluciones al mosaico de un BitmapDrawable que podría implementar.

  • Cómo adjuntar un mapa de bits al iniciar ACTION_SEND
  • Desconcertado por el valor de píxeles en Bitmap (pre multiplicado usando setPixel)
  • Descarga asíncrona de mapas de bits en un adaptador, con énfasis en Bitmap.recycle ()
  • ¿Cómo mantener una imagen en una actividad de Android durante un cambio de orientación?
  • Impresión POS / ESC Apex3 image SOS
  • problema en el uso de mapa de bits en android
  • Escala de Android zoom zoomout mapa de bits en lienzo
  • DrawBitmap: ¿Cómo se pueden establecer coordenadas y utilizar una matriz?
  • Imagen seleccionada de gallary no va a establecer en ImageView
  • Cómo tomar una captura de pantalla de SurfaceView con una vista previa de la cámara
  • ¿Por qué tanta memoria?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.