2012-03-13 9 views

Respuesta

25

EDITAR


La respuesta original es incorrecta. Puede usar sourceRect para especificar una parte de un mapa de bits para dibujar. Puede ser nulo, en cuyo caso se utilizará toda la imagen.

Según el comentario de la freidora que estaba dibujando debajo de algo, agregaré una nota al respecto.

drawBitmap(bitmap, srcRect, destRect, paint) no maneja Z ordering (depth) y el orden de las llamadas recurre a cuestiones de objetos.

Si tiene que dibujar 3 formas, cuadrado, triángulo y círculo. Si desea que el cuadrado esté arriba, debe dibujar el último.


No se ha especificado ninguna fuente, por lo que no se dibujó nada.

Ejemplo:

Usted tiene un mapa de bits de 100x100 píxeles. Quieres dibujar todo el mapa de bits.

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null); 

Desea dibujar solo la mitad izquierda del mapa de bits.

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null); 

Es necesario especificar la fuente de rect, el rect fuente puede ser un rectángulo en cualquier lugar de 0,0 a la anchura, la altura del mapa de bits.

+2

src - Puede ser nulo. El subconjunto del mapa de bits que se dibujará ---- dst -El rectángulo que el mapa de bits se escalará/se traducirá para encajar en -------- Intenté lo que dijiste pero todavía no se muestra por alguna razón .... –

+0

Espere, comenzó a funcionar, estaba dibujando los mapas de bits debajo de los rectángulos en la pantalla. ¡Gracias por la ayuda! –

+0

¿Puedes agregar cómo dibujaste el mapa de bits debajo de los rectángulos, estoy teniendo el mismo problema y estoy atrapado en él por horas? – JehandadK

20

El elemento principal a recordar cuando se define el Rect es:

  • izquierda < derecho y superior < inferior

El rect es en coordenadas de pantalla (Y positivo a la baja) ...

Encuentro útil pensar en el Rect a rguments

(left, top, right, bottom) 

como

(X, Y, X + Width, Y + Height) 

donde X, Y es la esquina superior izquierda de la imagen de sprite.

NOTA: Si desea centrar la imagen en una ubicación particular, recuerde compensar esos valores por la mitad del ancho del elemento & de altura.Por ejemplo:

int halfWidth = Width/2; 
int halfHeight = Height/2 
Rect dstRectForRender = new Rect(X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight); 
canvas.drawBitmap (someBitmap, null, dstRectForRender, null); 

Esto utiliza toda la imagen original (ya que rect src es nulo) y la escala para que se ajuste al tamaño y la posición de dstRectForRender ... y usando la pintura por defecto.

+0

Rly odd thx sin esta respuesta es imposible averiguarlo :) –

+0

¿Cómo alinear este ícono en medio del lienzo? – Gibs

1

¡No sé por qué pero esto funcionó para mí!

Rect rectangle = new Rect(0,0,100,100); 
canvas.drawBitmap(bitmap, null, rectangle, null); 

Gracias :)

Cuestiones relacionadas