Använda världsomvandlingsprocessen

Världsomvandlingen är en egenskap för klassen Graphics. Talen som anger världsomvandlingen lagras i ett Matrix objekt, som representerar en 3×3-matris. Klasserna Matrix och Graphics har flera metoder för att ange talen i världsomvandlingsmatrisen.

Olika typer av transformeringar

I följande exempel skapar koden först en rektangel på 50×50 och letar upp den vid ursprunget (0, 0). Ursprunget finns i det övre vänstra hörnet i klientområdet.

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)

Följande kod tillämpar en skalningstransformering som expanderar rektangeln med en faktor 1,75 i x-riktningen och krymper rektangeln med en faktor 0,5 i y-riktningen:

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

Resultatet är en rektangel som är längre i x-riktningen och kortare i y-riktningen än originalet.

Om du vill rotera rektangeln i stället för att skala den använder du följande kod:

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)

Om du vill översätta rektangeln använder du följande kod:

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)

Se även