HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Koordinátarendszerek


Példaprogram letöltése

7539 bájt

Hogyan képezhetjük le a valós méreteket és ábrákat a képernyőre? Miként rajzolhatunk úgy, hogy adatainkat milliméterben adjuk meg és nem pixelben számolva? Milyen koordinátarendszereket használhatunk a rajzolás közben?
Ezekre a kérdésekre keressük a választ e cikkünkben.

Ha a Graphics osztály függvényeivel rajzolunk, akkor alapesetben minden megadott érték a képernyő koordináta rendszerében lesz értelmezve, méghozzá pixelben mérve. Ez azt eredményezi, hogy a 0-0 pont a képernyő bal felső sarka lesz és az x tengely értéke balról jobbra nő, míg az y tengely értékei fentről lefelé.
Nyomtatáskor szintén a Graphics osztályt hívhatjuk segítségül a nyomtatandó ábra, feliratok kirajzolásához. Ez esetben valószínűleg szívesebben adnánk meg a méreteket milliméterben, hogy azok pontosan oda kerüljenek a papírlapra, ahová szeretnénk. Ezt nehézkes is lenne pixelben megadva eltalálni.
A GDI+ három különböző koordinátarendszert különböztet meg: World, Page, Device. Bármit is rajzoljunk a Graphics osztállyal, a függvények paramétereiként megadott értékek a World nézetben lesznek értelmezve, viszont megjelenítésükhöz konverzióra kerül sor: előbb Page, majd Device rendszerbe.
Ahhoz, hogy például milliméterben adhassuk meg a koordináta pontokat csak annyit kell tennünk, hogy a Graphics osztály PageUnit property-nek a megfelelő értéket adjuk.
Megnevezés Leírás
Display 1/75 inch
Document 1/300 inch
Inch 1 inch
Millimeter 1 mm
Pixel 1 pixel
Point 1/72 inch
World eredeti méret
Ahhoz, hogy a Page rendszer origó pontját eltoljuk egy általunk megadott tetszőleges pontba a TranslateTransform függvényt kell használnunk. Ennek két paraméterében kell megadnunk az eltolás mértékét, mely a megadott mértékegységben lesz értelmezve.
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
      Graphics g = e.Graphics;
      g.PageUnit = GraphicsUnit.Millimeter;
      g.TranslateTransform(50, 50);
Ezek után bármit is rajzolunk, arra már érvényesek lesznek az újonnan megadott beállítások.
      Pen p = new Pen(Color.Green, 0.1f);
      g.DrawEllipse(p, -10, -10, 20, 20);      
      p.Color = Color.Black;
      g.DrawLine(p, -1000, 0, 1000, 0);
      g.DrawLine(p, 0, -1000, 0, 1000);    
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 138. 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 |