2011-11-19 13 views
53

El documentation es bastante impreciso en cuanto a lo que sucede realmente cuando se usan estos métodos. ¿Puede alguien explicar cómo la matriz realmente afecta el mapa de bits que se está configurando? Usan el término concatenar allí, pero no estoy seguro de cómo se aplica ese término a los datos de coordenadas (antes solo lo había usado con respecto a la manipulación de cadenas).Buscando una explicación de Post/pre/set Translate (en objeto Matrix) y cómo usarlos

Respuesta

124

set-methods reemplazará la matriz actual con nuevos valores, sin tener en cuenta lo que la matriz contenía antes. El método pre y post aplicará una nueva transformación antes o después de lo que contenga la Matriz actual.

En este ejemplo, la rotación se ignorará ya que estamos utilizando el método de conjunto y el m solamente contendrá una traducción:

Matrix m = new Matrix();

m.setRotate (90);

m.setTranslate (100, 100);

En este ejemplo, la matriz final será una traducción seguido por una rotación:

Matrix m = new Matrix();

m.setTranslate (100, 100);

m.postRotate (90);

En el ejemplo final, la matriz final será una rotación seguido de una traducción:

Matrix m = new Matrix();

m.setTranslate (100, 100);

m.preRotate (90);

No hay más información en este (bastante largo) mensaje:

http://www.satyakomatineni.com/akc/display?url=displaynoteimpurl&ownerUserId=satya&reportId=2898

espero que ayude.

+1

Algunos comentarios sobre las coordenadas que utiliza serían excelentes en esta respuesta también. Por ejemplo, "una rotación seguida de una traducción" es bastante obvia: ¿pero cómo se logra esto en términos del eje xyy? Cómo rotar algo sobre su punto central y no la raíz de coordenadas. – RichieHH

+1

La pregunta era sobre la diferencia entre los métodos pre/post/set. Los documentos de API son bastante claros acerca de las diferentes variantes de cada transformación. Por supuesto, hay algunas consecuencias para los valores de los parámetros cuando aplica las transformaciones en diferentes órdenes, pero eso está un poco fuera de tema aquí. – Albin

+0

Esto ayuda mucho, creo tanto que el equipo de desarrollo de Android debería incluirlo en sus documentos. – tim687