Utilizzo della trasformazione di tipo World

La trasformazione globale è una proprietà della Graphics classe . I numeri che specificano la trasformazione globale vengono archiviati in un Matrix oggetto , che rappresenta una matrice 3×3. Le Matrix classi e Graphics hanno diversi metodi per impostare i numeri nella matrice di trasformazione globale.

Tipi diversi di trasformazioni

Nell'esempio seguente il codice crea prima un rettangolo 50×50 e lo individua all'origine (0, 0). L'origine si trova nell'angolo superiore sinistro dell'area client.

Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);
Dim rect As New Rectangle(0, 0, 50, 50)
Dim pen As New Pen(Color.FromArgb(128, 200, 0, 200), 2)
e.Graphics.DrawRectangle(pen, rect)

Il codice seguente applica una trasformazione di ridimensionamento che espande il rettangolo di un fattore pari a 1,75 nella direzione x e riduce il rettangolo di un fattore pari a 0,5 nella direzione y:

e.Graphics.ScaleTransform(1.75f, 0.5f);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ScaleTransform(1.75F, 0.5F)
e.Graphics.DrawRectangle(pen, rect)

Il risultato è un rettangolo più lungo nella direzione x e più breve nella direzione y rispetto all'originale.

Per ruotare il rettangolo anziché ridimensionarlo, usare il codice seguente:

e.Graphics.ResetTransform();
e.Graphics.RotateTransform(28); // 28 degrees
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.RotateTransform(28) ' 28 degrees
e.Graphics.DrawRectangle(pen, rect)

Per convertire il rettangolo, usare il codice seguente:

e.Graphics.ResetTransform();
e.Graphics.TranslateTransform(150, 150);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(150, 150)
e.Graphics.DrawRectangle(pen, rect)

Vedi anche