A GDI (Graphics Device Interface) biztosítja az ablakos felületet használó grafikus alkalmazásoknak az eszköz független elkészítését. Az így elkészült programok például képesek futni különböző képernyő felbontásokban, használni tudnak különböző nyomtatókat, legyen az mátrix vagy lézer nyomtató. A GDI réteg alkalmazására tekintsük meg a következő ábrát:
A GDI alkalmazása
A fenti ábrán jól látható hogy a GDI egy olyan réteg, amely biztosítja a kapcsolatot a különböző hardver eszközök és az alkalmazások között. Ez a struktúra megszabadítja a programozót a különböző hardver eszközök közvetlen programozásának fáradságos munkájától. A GDI egy program fájl, amit a számítógépen tárolunk, s az ablak alapú (Windows) alkalmazás/környezet tölti be a memóriába, amikor egy grafikus output miatt szükség van rá. A Windows betölti a szükséges eszközkezelő programot (Device Driver) is, amely elvégzi a grafikus parancs konvertálását a hardver eszköz számára érhető formába, feltéve, ha erre a GDI közvetlenül nem képes.
Device Context: alapvető eszköz, amely valójában egy olyan belső struktúra, amelyet a Windows arra használ, hogy kezelje az output eszközt.
GDI: C++ osztályok halmaza, amelyek biztosítják a grafikus adatok eljuttatását a programokból a hardverek felé a Device Driver segítségével. A .NET rendszer GDI változata a GDI+.
A GDI+ egy új fejlődési pontja a GDI változatoknak. A GDI+ –szemben a GDI-vel– egy jóval magasabb szintű programozást tesz lehetővé, a programozóknak már nem kell semmit sem tudniuk a hardver eszközökről.
A könyvünknek nem célja további részletességgel tárgyalni a GDI+ technikai leírását, csak a benne rejlő lehetőségek izgalmasak számunkra.
Amellett, hogy a GDI+ API (Application Programming Interface) rugalmasabb és teljesebb mint a GDI, nagyon sok újdonságot is megvalósítottak benne.