Calcul de la taille du texte avant de dessiner une toile
Je suis l'aide de Delphi 7. Je suis plus familier avec l'utilisation d'un canevas de dessin et de texte à une toile, et aussi à l'aide de TCanvas.TextHeight etc. Le problème se pose lorsque je veux mettre en œuvre le retour. Non seulement j'ai besoin de la meilleure façon de créer du texte à une toile et de l'avoir automatiquement automatiquement à une largeur de contrainte, mais j'ai aussi besoin de savoir à quelle hauteur (ou du nombre de lignes), il sera après il est enveloppé. J'ai besoin de préparer une autre image avant que je dessine le texte, d'une image qui doit être juste assez grand pour placer le texte enveloppé. C'est une tentative de reproduire la façon dont un iPhone affiche des messages SMS, avec un ballon sur le côté de l'écran à une hauteur variable de défilement boîte (TScrollingWinControl est ma base).
OriginalL'auteur Jerry Dodge | 2011-10-10
Vous devez vous connecter pour publier un commentaire.
Utiliser la (presque) tout-puissant
DrawText
fonction à l'aide d'un rectangle initial, et les drapeauxDT_WORDBREAK
(ce qui signifie que la chaîne doit être renvoyées à la ligne) etDT_CALCRECT
:En raison du drapeau
DT_CALCRECT
, la premièreDrawText
ne sera pas dessiner quoi que ce soit, mais seulement de modifier la hauteur der
de sorte qu'il peut contenir l'ensemble de la chaîne deS
(ou de réduire la largeur der
siS
arrive à tenir sur une seule ligne; en outre, siS
contient un mot qui ne tient pas sur une seule ligne, la largeur der
sera augmenté). Ensuite, vous pouvez faire ce que vous voulez avecr
, et puis vous pouvez dessiner la chaîne pour de vrai.Essayez ceci, par exemple:
Capture d'écran http://privat.rejbrand.se/DrawTextChat.png
Salut Andreas - Grande réponse, comme d'habitude!
OriginalL'auteur Andreas Rejbrand