Le dessin du Texte avec GDI+
J'ai cherché quelques jours maintenant de trouver une possibilité d'afficher du texte sur mon GDI+ application.
J'ai essayé d'utiliser le DrawString()
fonction de GDI+, mais la référence sur MSDN ne fonctionne pas car il ne correspond pas à la liste des paramètres. Je suis à l'aide de Visual C++ 2010 Express.
J'ai changé le MSDN exemple pour faire de la compilation, comme ceci:
LinearGradientBrush* myBrush = new LinearGradientBrush(Rect(0,0,width,height),Color::Red, Color::Yellow, LinearGradientMode::LinearGradientModeHorizontal);
Font* myFont = new Font(hdc);
RectF rect = RectF(10,10,100,100);
graphics.DrawString(TEXT("Look at this text!"),100, myFont,rect,&StringFormat(0,0), myBrush);
J'ai aussi essayé deux autres fonctions:
TextOut(hdc,10,10,TEXT("Text"),6);
DrawText(hdc,TEXT("Text"),0,LPRECT(0),0);
Aucun d'entre eux montre un texte sur l'écran. Le dessin des lignes, des ellipses, etc. fonctionne sans problèmes.
Pourquoi ne pas le texte ci-dessus-dessin, le travail de routine? Quelqu'un peut-il fournir un exemple?
Pourquoi dites-vous que la chaîne
Je l'ai changé à 18 ans, mais il ne marche pas non plus.
J'ai eu un problème de compilation et maintenant au moins la fonction textout œuvres. Mais drawtext ne marche pas.
Où en êtes-vous
Look at this text!
est 100 caractères?Je l'ai changé à 18 ans, mais il ne marche pas non plus.
J'ai eu un problème de compilation et maintenant au moins la fonction textout œuvres. Mais drawtext ne marche pas.
Où en êtes-vous
graphics
? Pourquoi êtes-vous l'allocation de myBrush
par new
(je demande parce que vous pourriez avoir une bonne raison, je ne suis pas snob)?
OriginalL'auteur Toast | 2011-09-04
Vous devez vous connecter pour publier un commentaire.
Vous faites le assez classique erreur de ne pas vérifier la valeur de retour de la carte Graphique::DrawString(), il vous dira ce que vous avez fait de mal. InvalidParameter est assez probable ici. Il est également assez difficile de le contexte dans lequel ce code s'exécute, c'est mieux d'être à l'intérieur du gestionnaire de message WM_PAINT ou vous ne verrez jamais la sortie. Il n'existe aucune preuve de nettoyage de code, le code des fuites d'objets mal.
Nous allons travailler à partir d'un exemple complet, en commençant par le standard code généré par le Projet Win32 modèle. Je sais que vous avez déjà un travail, mais il pourrait être intéressant pour les autres la lecture de cette réponse. Commencez par donner à la nécessaire #comprend:
Localiser la fonction WinMain, nous devons initialiser GDI+:
et à la fin de la fonction après la boucle de message:
Maintenant localiser la procédure de fenêtre (WndProc) et faire le WM_PAINT cas similaire à ceci:
Qui produit ce:
Modifier ce code comme bon vous semble, l'affirme, vous évitera bien des ennuis.
OriginalL'auteur Hans Passant
MSDN est votre ami (vraie chose):
Dessin d'une Ligne - exemple de code: compiler et exécuter
et
Dessin d'une Chaîne -- remplacer OnPaint() dans la précédente.
OriginalL'auteur SChepurin