Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.
Często w pracy z grafiką pojawia się potrzeba dodania tekstu. Może to być np. opis, czy nota autorska. Jeżeli chcemy dodać sformatowany tekst do obrazka należy wykonać kilka kroków.
Utworzenie obiektu Graphics
W tym celu w aplikacji Windows Forms wywołujemy metodę this.CreateGraphics(). Możemy też utworzyć wspomniany obiekt z bitmapy za pomocą metody Graphics.FromImage(bitmap).
1: Graphics g = this.CreateGraphics();
Utworzyć obiekt Font. Klasa Font oferuje 13 różnych konstruktorów wywołania. Najprostszą metodą, aby utworzyć obiekt Font jest podanie nazwy czcionki, rozmiaru i stylu.
1: Font f = new Font("Consolas", 12, FontStyle.Bold);
Inną metodą jest np. wykorzystanie FontFamily:
1: FontFamily ff = new FontFamily("Consolas");
2: Font f = new Font(ff, 40, FontStyle.Underline);
Utworzenie obiektu Brush
Krok opcjonalny. Najprostszą metodą jest wykorzystanie wyliczenia Brushes, które oferuje pędzle dla wszystkich standardowych kolorów, np.:
1: Brush b = Brushes.DarkRed;
Opcjonalnie możemy wykorzystać klasę SolidBrush, wyliczenie SystemBrushes,czy bardziej skomplikowany LinearGradientBrush.
Ustawienie opcji wyrównania i kierunku
Możemy kontrolować wyrównaniem (ang. alignment) i kierunkiem (ang. direction) tekstu wykorzystując StringFormat. Jest to oczywiście opcjonalny krok.
Jeżeli chcemy kontrolować wyrównanie napisu należy utworzyć instancję klasy StringFormat. Następnie ustawiamy jej właściwości. Przykładowo jeżeli chcemy wycentrować tekst w poziomie, oraz ustawić wyrównanie do dołu w pionie:
1: StringFormat f1 = new StringFormat();
2: f1.LineAlignment = StringAlignment.Far;
3: f1.Alignment = StringAlignment.Center;
Właściwości:
Rysowanie
Narysowanie tekstu sprowadza się do wywołania Graphics.DrawString wraz z określeniem pozycji dla tekstu. Zakładając, że wszystkie zmienne są zadeklarowane:
1: g.DrawString("Eastgroup.pl", f, b, 10, 10);
W tym wypadku f to obiekt typu Font, b – typu Brush. Pierwsza wartość liczbowa to x, druga – y.
Składamy przykłady
Pokazane zostały wszystkie elementy niezbędne, aby rozpocząć swoją przygodę z rysowaniem tekstów. Pora złożyć z nich działający przykład:
1: Font f = new Font("Consolas", 40, FontStyle.Underline);
2: Brush b = Brushes.DarkRed;
3: Graphics g = this.CreateGraphics();
4: g.DrawString("Eastgroup.pl", f, b, 10, 10);
Powyższy kod dodajemy do metody skojarzonej ze zdarzeniem Paint (np. Form1_Paint) w naszej formatce.

Kolejny przykład demonstruje wstawianie tekstu do prostokąta, oraz jego wyrównanie za pomocą StringFormat:
1: FontFamily ff = new FontFamily("Consolas");
2: Font f = new Font(ff, 12, FontStyle.Underline);
3: Brush b = new SolidBrush(Color.Red);
4:
5: StringFormat f1 = new StringFormat();
6: f1.LineAlignment = StringAlignment.Far;
7: f1.Alignment = StringAlignment.Center;
8:
9: Graphics g = this.CreateGraphics();
10:
11: // Rysujemy prostokąt
12: Rectangle r = new Rectangle(new Point(40, 40), new Size(200, 200));
13: g.DrawRectangle(Pens.Black, r);
14:
15: g.DrawString("Eastgroup.pl", f, b, (RectangleF)r, f1);

Artykuł ten zamyka temat grafiki. W następnym wpisie zapoznamy się z wątkami.
Kolejny artykuł z serii to 70-536: Starting Multiple Threads