Windows - Graphic Device Interface új verziója (GDI+)

Ha Windows-os alkalmazásunk grafikát használ, akkor ehhez elengedhetetlen volt a GDI használata. A Windows XP megjelenésével jelentős fejlődésen ment keresztül és immár GDI+ névvel szerepel az a grafikus interfész, melyen keresztül számtalan grafikai lehetőség tárul elénk. A GDI+ megvalósítása egyetlen GdiPlus.dll nevű állományból áll. Fontos tudnunk, hogy ezt nem csak a Windows XP alatt használhatjuk, hanem a Windows NT 4 SP6, Windows 2000, Windows 98 és Windows Millennium Edition operációs rendszereken is, így programjaink grafikai lehetőségeit kibővíthetjük ezen rendszerek alatt is, használjunk akár C, Basic, Delphi vagy bármilyen egyéb fejlesztői környezetet. A GDI (Graphic Device Interface) egy programozók által elérhető Windows API. Célja, hogy az alkalmazások számára biztosítsa a grafikus támogatást. Olyan eljárások és függvények gyűjteménye, amelyek nagyban megkönnyítik a grafikus effektusok, formázott szövegek és egyéb objektumok megjelenítését a képernyőn és a nyomtatón egyaránt. Két alapvető részből áll: Win32 GDI és kernel-mode GDI. Az előbbi az alkalmazások, utóbbi pedig a kernel módú grafikus meghajtók (az eszközmeghajtók is használhatják) számára készült. A Win32 GDI közvetlenül meghívható programból a GDI32.DLL használatával (a %systemroot%\system32 könyvtárban található), míg a kernel-mode GDI-t főleg az opercációs rendszer hívja meg a WIN32K.SYS fájlból (helye ugyanott). Mindkettő egyik oldalról kapcsolatot teremt a fizikai eszközzel a másik oldalon ezt metódusokon, tulajdonságokon és eseményeken keresztül jeleníti meg, ezért a programozó számára eszköz-független környezetet biztosít (a Windows nem is teszi lehetővé a programoknak, hogy közvetlenül elérjék az eszközöket).

Mi a GDI+ és milyen fő részekre osztható?

A GDI továbbfejlesztéseként, számos új technológiát magában foglalva megtalálható a Windows XP és Windows .NET Server (BizTalk, Commerce, Exchange, SharePoint Portal, stb.) operációs rendszerekbe beépítve és gyakorlatilag bármilyen fejlesztőkörnyezetben felhasználható. A GDIPLUS.DLL-en keresztül hívható meg. Windows XP előtti rendszerekben is használható, ehhez először a kliensgép rendszermappájába kell elhelyezni. A Microsoft ezt jogilag lehetővé teszi, sőt letölthető a honlapjukról a http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm címről vagy a www.microsoft.com oldalon a keresőbe írjuk be: GdiPlus.dll.

Három alapvető részre bontható:

2D vektor grafika:
Magában foglalja az úgynevezett rajz primitívek (vonalak, görbék, Bézier görbék, alakzatok (téglalap, kör, stb.)) készítését, a képeket leíró matematikai függvényekkel.

Bitképek kezelése:
Teljes körű a bitképek támogatása különböző színmélységben, felbontásban, formátumban. Ezenkívül a velük végzett fájlműveleteket is támogatja

Tipográfia:
Az elkészült ábrák különböző eszközökön való megjelenítésének lehetővé tétele a legjobb minőségben. Egy papíron megjelent rajz nem biztos, hogy egy képcsöves monitoron ugyanúgy néz ki, mint egy LCD kijelzőn (sőt biztos, hogy nem) vagy a nyomtatón. A GDI+ külön foglalkozik ezen problémák elhárításával.

Mennyivel tud többet a GDI+, mint az elődje?

Színátmenet támogatás:
Lineáris átmenetek készíthetők vele, amivel különböző alakzatokat lehet kitölteni. Meg kell adni a kezdő és végszíneket a köztük lévő átmenetet a GDI+ kiszámolja. Beállítható az is, hogy vízszintesen, függőlegesen, egy középpontból vagy valamelyik sarokból indulva történjen mindez.

Cardinal Splines:
Egy vonal leírható referenciapontok halmazaként. Ez annyit jelent, hogy megadunk referencia pontokat, amelyeken a vonalnak át kell mennie. A pontok közti szakaszt a GDI+ fogja felépíteni, méghozzá görbékből, mindig figyelve a következő pont utáni irányt. Ezzel a technológiával egyenletesebb, élektől mentes szakaszokat kapunk, ellentétben azzal a megoldással, amikor egyenesek kötik össze a pontokat.

Independent Path Objects:
A GDI-ben az objektumok létrejötte után a művelet befejezéséhez vezető út törlődött. A GDI+-ban nem, ezért több objektum is felépíthető az út ismételt létrehozása nélkül.

Transzformációk és mátrix objektumok:
Megjelent a mátrix objektum egy hatásos eszközt adva a különböző transzformációk könnyű és gyors elvégzéséhez. Egy objektum összekapcsolható egy mátrixszal és képernyőn a kettő összesítéséből származó eredmény jelenik meg.

Skálázható területek:
A területek (Regions) skálázhatók, elforgathatók és átalakíthatók lettek.

Alpha Blending:
A Windows 2000-ben jelent meg először ez a technológia az operációs rendszer szintjén, most a GDI+ részéről teljes támogatást kapunk, hogy beépítsük saját alkalmazásainkba. A rajzolt objektum és a háttér közötti átlátszóságot jelenti. Például kirajzolunk egy teljesen hétköznapi Windows ablakot a képernyőre, de látszik alatta az Asztal és a rajta lévő ikonok. Természetesen az átlátszóság mértéke állítható.

Több képformátum támogatása:
A GDI+ Image, Bitmap és Metafile osztályai lehetővé teszik a képek mentését, betöltését és különböző formátumokra való átalakítását. A következő képformátumok támogatásával: BMP, EMF, GIF, JPEG, EXIF, PNG, TIFF, ICON, WMF.

C# Software Online hetilapunkban gyakorlati példák, mintaprogramok találhatók a GDI+ használatáról.