A megoldás lényege abból áll, hogy a Pen objektumnál, mely a grafika körvonalát határozza meg, adott egy Brush nevű property. E property-hez tetszőleges ecset rendelhető, bármilyen típusú is legyen (SolidBrush, LinearGradientBrush, stb.). Ettől kezdve az így létrehozott ceruza (Pen), már nem a Color property-ben megadott színnel rajzol, hanem a Brush property-ben megadott ecsetet használja a körvonal elkészítésekor.
A mellékelt példában egy olyan feliratot készítünk, melynek körvonala színátmenetes. Ehhez arra lesz szükségünk, hogy megszerezzük a szöveg körvonalának leírását, melyhez egy GraphicsPath nevű osztályt használhatunk.
Dim g As Graphics = e.Graphics
Dim gp As New GraphicsPath()
Szükségünk lesz továbbá a kirajzolandó sztring szélességére és magasságára a színátmenethez.
Dim s As String = "Software Online"
Dim size As SizeF = g.MeasureString(s, New Font("Times New Roman", 80))
A GrahpicsPath osztály példányához hozzáadjuk a sztringet, mint új grafikát az AddString függvénnyel.
Dim ff As New FontFamily("Times New Roman")
gp.AddString(s, ff, 1, 80, New Point(0, 0), StringFormat.GenericDefault)
Most már jöhet a kirajzolás előkészítése: létrehozunk egy LinearGradientBrush osztályt, melyben leírjuk a szükséges színátmenetet. Itt használjuk fel a már lekérdezett sztring szélességét és magasságát. A színátmenet létrehozásához megadható egy szög, mely azt írja le, hogy a két szín közötti átmenet milyen irányban legyen kirajzolva. Ennek mértékét az angle nevű változóból vesszük, melyet egy Timer komponens állandóan növel. Ezzel azt érjük el, hogy a színátmenet folyamatosan „mozog”.
Dim lgb As New LinearGradientBrush(New Rectangle(0, 0, CInt(size.Width), CInt(size.Height)), Color.Yellow, Color.Red, angle, True)
Most már jöhet a Pen létrehozása, melynek konstruktorában megadjuk a felhasználandó ecsetet és a körvonal vastagságát. Végül pedig kirajzoljuk a sztringet és készen is vagyunk.
Dim p As New Pen(lgb, 2)
g.FillPath(New SolidBrush(Color.Gray), gp)
g.DrawPath(p, gp)