PDA

Ver la Versión Completa : [ CONSULTA ] Problema con el trato bitmaps


pablogarcia013
13/06/13, 09:34:07
Buenas! tengo un bitmap dibujado en un lienzo (canvas) y quiero hacer cositas con el :) rotar agrandar mover etc, mi bitmap esta dentro de una clase llamada imagen que tiene:

public class Imagen{
private int x,y;
private double ancho,alto;
private double rotacion;
private Bitmap bmp;
......

Tengo 2 problemas:
1. Cuando roto lo hago con una matriz y me rota genial, pero el x,y,ancho,alto de la clase imagen que utilizo para ver si cuando toco sobre el lienzo hay un bitmap dentro, no se me rota entonces si tengo un bitmap rectangular, el rectángulo que "contiene" al bitmap no rota por lo que a la hora de tocar dentro hay posiciones que no lo detecta (por el problema de que no roto los puntos x,y,ancho,alto) Espero haberme explicado bien.

2. Cuando escalo el bitmap si lo hago pequeño y luego grande a veces se me deforma un poco, o se me estira, lo que hago para reescalarlo es calcular la distancia entre los 2 dedos que los voy moviendo y cambiar el "ancho" y el "y" de la imagen y llamo al metodo de reescalar bitmap.

Espero que puedan echarme una manilla! muchas gracias :)

mocelet
13/06/13, 10:28:46
1 - Claro, si rotas lo que dibujas en el canvas con una matriz tendrás que aplicar la matriz también a todas las variables que uses y que tengan que rotar. La clase Matrix tiene unos cuantos métodos para transformar coordenadas.

2 - Usa el mismo factor de escala para X y para Y, así no se deforma.

pablogarcia013
13/06/13, 11:01:09
Gracias por la respuesta! pero no se como aplicar esa matriz a las coordenadas, porque para aplicar la matriz al bitmap simplemente lo hago con canvas.drawBitmap(bmp,matriz,null) pero para aplicarla a 4 puntos?

mocelet
13/06/13, 12:08:50
Pues eso, mira la documentación de la clase Matrix que tiene un montón de métodos para convertir coordenadas

pablogarcia013
14/06/13, 08:42:51
Siento mi ignorancia..o el no saber buscar bien, pero en el api no vi el metodo que me dices...o lo vi pero no se que es ese...

mocelet
14/06/13, 08:46:07
Son todos los mapXXXX, según lo que quieras mapear y donde quieras que te guarde el resultado.

pablogarcia013
14/06/13, 08:55:48
Muchas gracias! voy a probarlo!