Traduzione

Alcune applicazioni traducono (o spostano) oggetti disegnati nell'area client. chiamando la funzionesetWorldTransform diper impostare la trasformazione dello spazio globale appropriata sullo spazio delle pagine. La funzione SetWorldTransform riceve un puntatore a una strutturaXFORMcontenente i valori appropriati. I membri eDx eDy di XFORM specificano rispettivamente i componenti di conversione orizzontale e verticale.

Quando si verifica la conversione, ogni punto di un oggetto viene spostato verticalmente, orizzontalmente o entrambi, in base a una quantità specificata. La figura seguente mostra un rettangolo da 20 a 20 unità che è stato convertito a destra di 10 unità quando viene copiato dallo spazio delle coordinate mondiali allo spazio delle coordinate della pagina.

illustrazione che mostra un rettangolo in una posizione nello spazio globale e in una posizione diversa nello spazio pagina

Nella figura precedente la coordinata x di ogni punto del rettangolo è maggiore di 10 unità rispetto alla coordinata x originale.

La conversione orizzontale può essere rappresentata dall'algoritmo seguente.

x' = x + Dx 

Dove x' è la nuova coordinata x, x è la coordinata x originale e Dx è la distanza orizzontale spostata.

La conversione verticale può essere rappresentata dall'algoritmo seguente.

y' = y + Dy 

Dove y' è la nuova coordinata y, y è la coordinata y originale e Dy è la distanza verticale spostata.

Le trasformazioni di traslazione orizzontale e verticale possono essere combinate in una singola operazione usando una matrice di 3 by-3.

                      |1   0   0| 
|x' y' 1| = |x y 1| * |0   1   0| 
                      |Dx  Dy  1| 

Le regole di moltiplicazione della matrice dichiarano che il numero di righe in una matrice deve essere uguale al numero di colonne nell'altro. Intero 1 nella matrice |x y 1| è un segnaposto aggiunto per soddisfare questo requisito.

La matrice 3 per 3 che ha prodotto la trasformazione di conversione illustrata contiene i valori seguenti.

|1  0  0| 
|0  1  0| 
|10 0  1|