Udostępnij za pośrednictwem


Korzystanie z transformacji świata

Transformacja świata jest właściwością klasy Graphics. Liczby określające transformację świata są przechowywane w obiekcie macierzy, który reprezentuje macierz 3 ×3. Klasy Matrix i Graphics mają kilka metod ustawiania liczb w macierzy transformacji globalnej. Przykłady w tej sekcji manipulują prostokątami, ponieważ prostokąty są łatwe do narysowania i można łatwo zobaczyć wpływ przekształceń na prostokąty.

Zaczynamy od utworzenia prostokąta 50 przez 50 i zlokalizowania go w miejscu początkowym (0, 0). Źródło znajduje się w lewym górnym rogu obszaru klienta.

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.DrawRectangle(&pen, rect);

Poniższy kod stosuje transformację skalowania, która rozszerza prostokąt o współczynnik 1,75 w kierunku x i zmniejsza prostokąt o współczynnik 0,5 w kierunku y:

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.ScaleTransform(1.75f, 0.5f);
graphics.DrawRectangle(&pen, rect);

Wynik jest prostokątem dłuższym w kierunku x i krótszym w kierunku y niż oryginalny.

Aby obrócić prostokąt zamiast go skalować, użyj następującego kodu zamiast poprzedniego kodu:

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.RotateTransform(28.0f);
graphics.DrawRectangle(&pen, rect);

Aby przetłumaczyć prostokąt, użyj następującego kodu:

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.TranslateTransform(150.0f, 150.0f);
graphics.DrawRectangle(&pen, rect);