Dessiner du texte (GDI+)
Vous pouvez utiliser la méthode DrawString de la classe Graphics pour dessiner du texte à un emplacement spécifié ou dans un rectangle spécifié.
Dessin de texte à un emplacement spécifié
Pour dessiner du texte à un emplacement spécifié, vous avez besoin d’objets Graphics, FontFamily, Font, PointF et Brush .
L’exemple suivant dessine la chaîne « Hello » à l’emplacement (30, 10). La famille de polices est Times New Roman. La police, qui est un membre individuel de la famille de polices, est Times New Roman, taille 24 pixels, style régulier. Supposons que graphics soit un objet Graphics existant.
FontFamily fontFamily(L"Times New Roman");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
PointF pointF(30.0f, 10.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);
L’illustration suivante montre la sortie du code précédent.
Dans l’exemple précédent, le constructeur FontFamily reçoit une chaîne qui identifie la famille de polices. L’adresse de l’objet FontFamily est passée comme premier argument au constructeur Font . Le deuxième argument passé au constructeur Font spécifie la taille de la police mesurée en unités données par le quatrième argument. Le troisième argument spécifie le style (régulier, gras, italique, etc.) de la police.
La méthode DrawString reçoit cinq arguments. Le premier argument est la chaîne à dessiner, et le second est la longueur (en caractères et non en octets) de cette chaîne. Si la chaîne est terminée par null, vous pouvez passer –1 pour la longueur. Le troisième argument est l’adresse de l’objet Font qui a été construit précédemment. Le quatrième argument est un objet PointF qui contient les coordonnées du coin supérieur gauche de la chaîne. Le cinquième argument est l’adresse d’un objet SolidBrush qui sera utilisé pour remplir les caractères de la chaîne.
Dessin de texte dans un rectangle
L’une des méthodes DrawString de la classe Graphics a un paramètre RectF . En appelant cette méthode DrawString , vous pouvez dessiner du texte qui s’encapsule dans un rectangle spécifié. Pour dessiner du texte dans un rectangle, vous avez besoin d’objets Graphics, FontFamily, Font, RectF et Brush .
L’exemple suivant crée un rectangle avec un coin supérieur gauche (30, 10), une largeur de 100 et une hauteur de 122. Ensuite, le code dessine une chaîne à l’intérieur de ce rectangle. La chaîne est limitée au rectangle et s’encapsule de manière à ce que les mots individuels ne soient pas brisés.
WCHAR string[] =
L"Draw text in a rectangle by passing a RectF to the DrawString method.";
FontFamily fontFamily(L"Arial");
Font font(&fontFamily, 12, FontStyleBold, UnitPoint);
RectF rectF(30.0f, 10.0f, 100.0f, 122.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(string, -1, &font, rectF, NULL, &solidBrush);
Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
L’illustration suivante montre le texte dessiné dans le rectangle.
Dans l’exemple précédent, le quatrième argument passé à la méthode DrawString est un objet RectF qui spécifie le rectangle englobant pour le texte. Le cinquième paramètre est de type StringFormat: l’argument est NULL , car aucune mise en forme de chaîne spéciale n’est requise.