2011-11-19 9 views
53

Il documentation è piuttosto vago su ciò che sta realmente accadendo quando questi metodi vengono utilizzati. Qualcuno può spiegare in che modo Matrix influenza effettivamente la bitmap su cui è impostata? Usano il termine concatenare lì, ma non sono chiaro su come quel termine si applica ai dati di coordinate (averlo usato solo per quanto riguarda la manipolazione delle stringhe prima).Cercare una spiegazione di post/pre/set Traduci (in oggetto Matrix) e come usarli

risposta

124

I metodi set sostituiranno la matrice corrente con nuovi valori, ignorando qualunque sia la matrice contenuta in precedenza. Il metodo pre e post applicherà una nuova trasformazione prima o dopo quello che contiene la matrice corrente.

In questo esempio, la rotazione saranno ignorati, poiché si utilizza il metodo set e la m conterrà solo una traduzione:

Matrix m = new Matrix();

m.setRotate (90);

m.setTranslate (100, 100);

In questo esempio, la matrice finale sarà una conversione seguita da una rotazione:

Matrix m = new Matrix();

m.setTranslate (100, 100);

m.postRotate (90);

Nell'ultimo esempio, la matrice finale sarà una rotazione seguita da una traduzione:

Matrix m = new Matrix();

m.setTranslate (100, 100);

m.preRotate (90);

C'è qualche informazione in più in questa (piuttosto lungo) post:

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

Speranza che aiuta.

+1

Alcuni commenti sulle coordinate che utilizza sarebbero super anche in questa risposta. ad esempio, "una rotazione seguita da una traduzione" è abbastanza ovvia: ma come si ottiene in termini di asse x & y? Come ruotare qualcosa sul suo punto centrale e non sulla radice di coordinate. – RichieHH

+1

La domanda riguardava la differenza tra i metodi pre/post/set. I documenti API sono piuttosto chiari sulle diverse varianti di ogni trasformazione. C'è ovviamente qualche conseguenza ai valori dei parametri quando si applicano le trasformazioni in diversi ordini, ma qui è un po 'fuori tema. – Albin

+0

Questo aiuta molto, penso così tanto che il team di sviluppo Android dovrebbe includerlo nei loro documenti. – tim687

Problemi correlati