HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Tranformációk: forgatás, méretezés, mozgatás


Graphics osztály 11. rész

Példaprogram letöltése

7736 bájt

Grafikai sorozatunkban most a transzformációk segítségével foglalkozunk. Ezek segítségével igen egyszerű lehetőségünk nyílik arra, hogy tetszőleges grafikai objektumokat forgassunk el tetszőleges szögben, vagy méretezzünk át akár X, akár Y irányba, de azt is megoldhatjuk hogy elmozgassuk eredeti helyükről ezeket.

E három főművelethez tartozik három függvény.
TranslateTransform
Osztály: System.Drawing.Graphics
public void TranslateTransform(
float dx,
float dy
);
A TranslateTransform segítségével lehetőségünk nyílik arra, hogy grafikai objektumaink kirajzolását eltoljuk tetszőleges mértékben az X és Y koordinátatengely mentén.
Paraméterek
float dx
Az X irányú eltolás mértéke.
float dy
Az Y irányú eltolás mértéke.
Megjegyzés
A függvény használata után minden olyan függvény, mely rajzol az itt megadott mértékben eltolva fogja megjeleníteni a grafikáit.
RotateTransform
Osztály: System.Drawing.Graphics
public void RotateTransform(
float angle
);
A RotateTransform függvény használatával beállíthatjuk, hogy egy adott szögben elforgatva jelenjen meg minden kirajzolt objektum.
Paraméterek
float angle
Az elforgatás szögét adhatjuk meg az angle paraméterben fokban mérve.
Megjegyzés
A függvény használata után minden olyan függvény, mely rajzol az itt megadott mértékben elforgatva fogja megjeleníteni a grafikáit.
ScaleTransform
Osztály: System.Drawing.Graphics
public void ScaleTransform(
float sx,
float sy
);
A ScaleTransform segítségével nagyíthatjuk/kicsinyíthetjük a kirajzolandó grafikai objektumokat.
Paraméterek
float sx
Az X irányú torzítás mértéke.
float sy
Az Y irányú torzítás mértéke.
Megjegyzés
A függvény használata után minden olyan függvény, mely rajzol az itt megadott mértékben torzítva fogja megjeleníteni a grafikáit.
ResetTransform
Osztály: System.Drawing.Graphics
public void ResetTransform();
A TranslateTransform, RotateTransform és a ScaleTransform által előidézett hatásokat egy lépésben megszüntethetjük a ResetTransform függvény hívásával.
A példaprogram
Mellékelt példában a kirajzolandó objektumokat eltoljuk a Form aktuális méretének megfelelően úgy, hogy a 0, 0 koordináta pont a Form közepére kerüljön.
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
      dx = this.ClientRectangle.Width / 2;
      dy = this.ClientRectangle.Height / 2;
      g.TranslateTransform(dx, dy);
Ez követően beállítjuk az elforgatás szögét, melyet egy counter nevű változóból veszünk. Ennek értékét egy Timer komponens folyamatosan növeli, így grafikánk folyamatosan forogni fog. A forgás középpontja a koordináta rendszer 0, 0 pontja lesz, melyet most a Form közepére „toltunk”.
Végső lépésként beállítjuk a torzítás mértékét is, melyet szintén e counter változótól teszünk függővé, így a folyamatos forgás mellett, a kirajzolt alakzat nagysága is folyamatosan változik.
      g.RotateTransform(counter);
      g.ScaleTransform((float)Math.Cos(counter*Math.PI/180), (float)Math.Cos(counter*Math.PI/180));
Ezt követően már bármilyen függvényt is használunk, mely rajzol a Form-ra, arra már vonatkozni fognak a fenti beállítások és ennek megfelelően jelenik meg az eredmény.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 211. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |