C# - Szöveg megjelenítése rajzolással

forráskód letöltése
Mellékelt példában bemutatjuk, hogy milyen egyszerűen rajzolhatunk ki tetszőleges szöveget általunk megadott Font-al úgy, hogy a betűk hátterén akár színátmenet, akár egy kép legyen a kitöltő minta.
A rajzoláshoz a Form Paint eseményét használjuk fel. Itt paraméterként kapjuk a rajzoláshoz szükséges Graphics osztályt, melyből létrehozunk egy változót az egyszerűbb kezelhetőség érdekében.
Szöveg kirajzolásához ezen osztály DrawString függvényét használjuk, ebből is azt a változatot, mely első paraméterként egy sztringet, másodikként egy Font osztályt, harmadikként egy Brush osztályt, végül az utolsó két paraméterében egy X, Y koordinátát vár.
A Font határozza meg a kiíráskor használt betűtípust. Ehhez létrehozunk egy font nevű változót. A konstruktorban első paraméterként a betűtípus nevét adjuk meg sztringként, majd annak mérete következik, végül pedig arról rendelkezünk, hogy kövér és aláhúzott legyen.
A Brush határozza meg, hogy kiíráskor a szöveg betűinek milyen legyen a háttere. Ehhez két különféle ecsetet hozunk létre, mivel feladatunk is kettős. Először a LinearGradientBrush osztályt használjuk. Itt egy folyamatos színátmenetet megvalósító ecset kerül létrehozásra. A második esetben a TextureBrush osztályt használjuk. Ennek segítségével egy Image típusú képet használhatunk fel rajzeszközként. Az egyszerűség kedvéért egy PictureBox komponensbe betöltöttünk egy képet, majd az ecset létrehozásakor ezt adtuk át a TextureBrush konstruktorának. Mivel a PictureBox komponens Visible property-e hamis, így a komponens futási időben nem látható.
      private void Form1_Paint (object sender, System.WinForms.PaintEventArgs e)
      {
        Graphics g = e.Graphics; 
        Rectangle rect = new Rectangle(10, 10, 400, 80);     
        Font font = new Font("Tahoma", 48, FontStyle.Bold | FontStyle.Underline);
        LinearGradientBrush brush = new LinearGradientBrush(rect, Color.Lime, Color.Blue, LinearGradientMode.Vertical); 
        g.DrawString("Animare Software", font, brush, 10, 10);
        TextureBrush brush2 = new TextureBrush(pictureBox1.Image); 
        g.DrawString("Animare Software", font, brush2, 10, 100);
      }