2010-05-07 7 views
2

Question A.Comment puis-je obtenir la hauteur d'un contenu de texte enrichi après le retour à la ligne?

Compte tenu

  1. Une chaîne en format texte enrichi qui peut avoir le paragraphe, les onglets, l'espace, saut de ligne, indentation, (ou même image?)
  2. une largeur pour le mot Envelopper le contrôle de texte enrichi/éditeur

Comment puis-je connaître la hauteur du contenu après avoir effectué tout l'emballage de mots? Y a-t-il quelque chose comme

int MeasureRichTextHeightAfterWordWrap (chaîne aRichTextContent, int aWidth)?

Sinon comment ces contrôles de texte riche savent-ils combien autosize? Dois-je placer le contenu sur un contrôle de texte riche factice, définir sa largeur et obtenir sa hauteur avec GetPositionFromCharIndex (TextLength-1) par la suite? Bien que cela fonctionne, il semble être « gaspillage »

Question B. Si je dessine le texte brut sur un mémo texte brut/contrôle/éditeur, et dessiner manuellement chaîne avec des indentations calculées manuellement, les pauses, les enveloppements de mots faire semblant du RTF.

Est-ce plus facile ou plus difficile?

Édité pour le rendre plus clair et désolé si mon anglais ressemble à un étudiant car ce n'est pas ma langue maternelle.

Répondre

1

Désolé pour ma mauvaise première tentative de réponse. I DID trouvez une réponse pour mesurer dans un RichTextBox. Apparemment, vous devez utiliser les appels API Win32 GDI.

http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms.controls/2004-09/0574.html

Je trouve cela en changeant ma recherche après avoir couru à travers cette pépite, ce qui explique pourquoi il n'y a pas une manière pure .NET pour le faire:

http://www.developmentnow.com/g/38_2005_10_0_0_626243/I-dont-believe-this-code-gives-the-correct-RichTextBox-string-size.htm