Megosztás a következőn keresztül:


A világtranszformáció használata

A világ átalakítása a Graphics osztály tulajdona. A világátalakítást meghatározó számok egy Matrix objektumban vannak tárolva, amely egy 3×3 mátrixot jelöl. A Matrix és Graphics osztályok számos módszerrel állíthatják be a számokat a világ transzformációs mátrixában.

Különböző típusú átalakítások

A következő példában a kód először létrehoz egy 50×50 méretű téglalapot, és az origóban (0, 0) helyezi el. A forrás az ügyfélterület bal felső sarkában található.

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)

A következő kód olyan méretezési átalakítást alkalmaz, amely x irányban 1,75-ös tényezővel bontja ki a téglalapot, és 0,5-ös tényezővel zsugorítja a téglalapot az y irányban:

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

Az eredmény egy téglalap, amely hosszabb az x irányban, és rövidebb az y irányban, mint az eredeti.

Ha a téglalapot skálázás helyett szeretné elforgatni, használja a következő kódot:

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)

A téglalap lefordításához használja a következő kódot:

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)

Lásd még