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