5. Wyświetlanie napisów

Szczawik

1 Wstęp
2 Definiowanie czcionki
3 Renderowanie
4 Kod źródłowy

Wstęp

Wyświetlanie napisów na ekranie jest ważnym elementem każdej aplikacji - pozwala prezentować różne wartości w ramach interfejsu użytkownik lub stanowić istotny element sceny. Może być dokonywane na przynajmniej cztery różne sposoby:

  • przez rysowanie napisów na ekranie, podobnie jak w GUI systemu Windows,
  • przez składanie bitmap z teksturami, reprezentującymi kolejne litery,
  • przez rysowanie napisu na powierzchni sprite (dwuwymiarowy obiekt w przestrzeni 3D zwrócony powierzchnią w stronę kamery),
  • przez renderowanie siatki lub bryły utworzonej na bazie obrysu napisu.

Niniejsza lekcja zawiera opis pierwszej - najprostszej i najbardziej popularnej metody rysowania. Jako punkt wyjścia posłuży nam aplikacja z kroku 4. Wykorzystanie tekstur.

d3dkurs5.jpg
Rys. 3. Okno aplikacji z przezroczystym napisem

Definiowanie czcionki

Do klasy TDirectX należy dodać pole prywatne:

private Microsoft.DirectX.Direct3D.Font font;

Na końcu funkcji Initialize dodajmy tworzenie obiektu czcionki DirectX:

font = new Microsoft.DirectX.Direct3D.Font(device, new System.Drawing.Font("Arial", 32, FontStyle.Bold));

Owy konstruktor ma liczne warianty - powyżej pokazany wymaga podania jedynie urządzenia oraz czcionki (obiekt typu System.Drawing.Font). W przykładzie czcionka ta jest określona przy pomocy konstruktora, przyjmującego nazwę kroju, rozmiar oraz styl tekstu.

Warto zwrócić uwagę na fakt, że po dodaniu do pliku źródłowego:

using Microsoft.DirectX.Direct3D;

samo oznaczenie typu zmiennej jako Font jest niejednoznaczne, gdyż kłóci się z typem System.Drawing.Font.

Renderowanie

Renderowanie napisu na ekranie jest zadaniem prostym i wymaga tylko jednej operacji - należy umieścić ją w bloku renderowania, między device.BeginScene() a device.EndScene():

font.DrawText(null, ((int)time/1000).ToString(), 8, 8, Color.FromArgb(100, Color.Red));

Użyte argumenty to:

  • obiekt sprite, na którym należy wykonać rysowanie napisu - null oznacza cel renderowania całości sceny, tutaj bufor tylny ekranu,
  • tekst - w naszym przypadku czas w sekundach od rozpoczęcia aplikacji,
  • współrzędne X oraz Y napisu,
  • kolor, który może uwzględniać również kanał przezroczystości (alpha).

Kod źródłowy

Całość kodu źródłowego projektu: d3dkurs5.zip

0 komentarzy