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);