A Graphics osztálynak van egy FromHdc nevű függvénye. Ez egy statikus függvény, mely a Graphics osztály egy új példányát adja vissza. E függvény paraméterként egy IntPtr típusú értéket vár. Hogy mit kell itt értékként megadnunk, ahhoz tegyünk egy kis kitérőt. Ebben a kitérőben vissza kell kanyarodnunk a GDI+ elődjéhez, a GDI-hez. Itt találunk egy GetDC függvényt, melynek paraméterként nulla értéket adva egy olyan leírót kapunk vissza, amelyet felhasználva képesek vagyunk a GDI-ben a képernyő teljes területére rajzolni. Most azonban a GDI+ nyújtotta lehetőségeket szeretnénk kihasználni, így egy Graphics osztályra lenne szükségünk, mely elérheti a képernyő területét.
Nincs más teendőnk ennek megvalósítása érdekében, mint hogy e két függvényt összepárosítsuk.
A GetDC eléréséhez szükségünk lesz a User32.dll rendszer állomány használatára, mivel e függvény ott található meg. Készítsünk egy egyszerű kis osztályt Win32 névvel, melyben egyetlen statikus függvényt deklarálunk, amely a GetDC lesz. Egy DllImport attribútummal megadjuk, hogy e függvényt a User32.dll-ben kell keresnie a fordítónak.
Public Class Win32
<DllImport("user32.dll")> _
Public Shared Function GetDC(ByVal hWnd As Integer) As IntPtr
End Function
End Class 'Win32
Ezt követően a GetDC már elérhető, így nincs más teendőnk, mint a Graphics osztály FromHdc függvényét meghívni, melynek paraméterét a GetDC fogja szolgáltatni.
scr = Graphics.FromHdc(Win32.GetDC(0))
Ha ez is megvan, akkor adott egy scr nevű Graphics típusú osztály, mellyel tetszőlegesen rajzolhatunk a képernyő teljes területére a már ismert GDI+ függvényeket használva.
scr.FillEllipse(New LinearGradientBrush(rect, c1, c2, r.Next(90), False), rect)