ATTENTION : ceci est la documentation d'une version antérieure de SFML ; la documentation de la dernière version officielle est accessible via le menu principal
Tutoriel - Module graphique - Afficher du texte
Introduction
Dans ce tutoriel, nous allons couvrir le rendu de texte à l'aide de la classe sf::String.
Créer une chaîne graphique
Afin d'afficher du texte dans une fenêtre, il faut créer une instance de sf::String. Une telle instance
possède trois paramètres : le texte à afficher, la police de caractères utilisée, et la taille des caractères. Notez bien
que sf::String n'est pas une classe de chaînes de caractères dans le sens de std::string,
c'est-à-dire qu'elle ne fournit aucune fonction ayant un rapport avec la manipulation de la chaîne en elle-même
comme par exemple find, append, substring, etc. Elle focalise uniquement sur
la partie graphique, et laisse la manipulation de la chaîne à std::string (ou n'importe quelle
autre classe que vous préférez utiliser).
Donc, voici comme nous définirions une chaîne contenant le texte "Hello", utilisant la police "arial.ttf", et avec une taille de caractères de 50 :
sf::String Text("Hello", "arial.ttf", 50.f); // Ou, si vous souhaitez le faire après la construction : sf::String Text; Text.SetText("Hello"); Text.SetFont("arial.ttf"); Text.SetSize(50.f);
Vous pouvez également utiliser des chaînes de caractères larges, si vous comptez utiliser du texte unicode :
Text.SetText(L"Hello");
Si le fichier contenant la police de caractères ne peut pas être chargé, ou n'est pas spécifié, une police par défaut est utilisée.
La police est en fait chargée à la première utilisation et avec la taille de caractères donnée, mais vous pouvez
forcer le chargement à n'importe quel moment et avec n'importe quelle taille, via la fonction statique
PreloadFont :
sf::String::PreloadFont("arial.ttf", 100.f);
Notez que SFML est capable de charger tout type de fichier de police de caractère (TTF, CFF, PCF, BDF, et beaucoup d'autres).
Par défaut, le jeu de caractères standard est chargé (codes ASCII de 31 à 255), mais il est possible de fournir votre propre jeu de caractères si vous comptez utiliser du texte unicode (comme par exemple des caractères chinois) :
std::wstring Charset = L"..."; sf::String::PreloadFont("arial.ttf", 100.f, Charset);
Notez que sf::String utilise en interne des chaînes larges (types std::wstring et wchar_t), et qu'utiliser
des chaînes multi-octets (std::string et char) nécessitera des conversions qui peuvent
être chères. Ainsi, dans la mesure du possible, préférez toujours utiliser des chaînes larges pour obtenir un
maximum de performances.
Afficher une chaîne
sf::String est une classe affichable standard, ce qui signifie qu'elle hérite de sf::Drawable et reçoit tous des attributs et fonctions, tout comme sf::Sprite.
Ainsi vous pouvez modifier sa position, sa taille, son orientation, sa couleur, etc. :
Text.SetColor(sf::Color(128, 128, 0)); Text.SetRotation(90.f); Text.SetScale(2.f); Text.Move(100.f, 200.f);
Puis, pour afficher la chaîne dans une fenêtre donnée, vous n'avez qu'à utiliser la fonction Draw :
sf::RenderWindow Window; ... Window.Draw(Text);
Conclusion
C'est tout ce qu'il y a à dire à propos des chaînes SFML. Vous pouvez maintenant afficher du texte avec différentes
polices, utilisant toutes les fonctionnalités graphiques des objets affichables de la SFML.
Vous pouvez maintenant vous rendre au tutoriel suivant, qui vous montrera comment ajouter des
post-effects
temps réel à vos graphiques.
- graphics-fonts.cpp (1.73 Ko)
