Textes inclinés

cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 28 déc. 2006 à 18:22
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 29 déc. 2006 à 21:05
Bonjour,
J'ai besoin afficher sur un PictureBox des textes inclinés. Depuis longtemps j'utilise la méthode TextOut de GDI32 qui fonctionne bien au niveau de l'affichage proprement dit mais qui semble parfois perturber la mémoire graphique des machines.
C'est pourquoi je souhaiterais m'orienter plutôt vers les fonctions de GDI+ qui semble mieux gérer la mémoire.J'ai concocté le petit test ci-dessous en liaison avec gdiplus.dll; il fonctionne parfaitement sauf en ce qui concerne l'instruction principale à mes yeux:  lm.lfEscapement 450 qui est censée être la commande d'inclinaison. A noter  que les commandes lm.lfItalic True pour la police italique et  lm.lfStrikeOut = True
qui commande un police barrée fonctionnent elles très bien.
 Quelqu'un aurait-il le commencement d'une idée?

Private Sub DrawText()
   Dim graphics As Long, brush As Long
   Dim fontFam As Long, curFont As Long
   Dim lm As LOGFONTW
   Dim rcOrigin As RECTF
   Dim str As String, strlen As Long
   str = "Texte avec une rotation!"
   strlen = Len(str)
   str = StrConv(str, vbUnicode)
   Call GdipCreateFromHDC(Me.hdc, graphics)
   Call GdipCreateSolidFill(Blue, brush)
   Call GdipCreateFontFamilyFromName(StrConv("Arial", vbUnicode), 0, fontFam)
   lm.lfItalic = True
   lm.lfEscapement = 450
   lm.lfStrikeOut = True
   Call GdipCreateFontFromLogfontW(Me.hdc, lm, curFont)
   rcOrigin.Left = 100
   rcOrigin.Top = 100
   Call GdipDrawString(graphics, str, strlen, curFont, rcOrigin, 0, brush)
   Call GdipDeleteFont(curFont)
   Call GdipDeleteFontFamily(fontFam)
   Call GdipDeleteBrush(brush)
   Call GdipDeleteGraphics(graphics)
End Sub

6 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 19:51
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 déc. 2006 à 20:14
Et la lecture de ce lien ne sera pas, non plus, une perte de temps :

http://edais.mvps.org/Tutorials/GDI/DC/DCch5.html
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
28 déc. 2006 à 21:46
Je te remercie, jmfmarques, pour cette abondante documentation, mais je remarque qu'elle concerne uniquement la librairie GDI32 et non GdiPlus.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2006 à 09:33
Pour GDI+, tu peux faire une rotation de ton Viewport, et tu pourras faire joujou avec des textes inclinés...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
29 déc. 2006 à 18:02
Les textes accompagnent, bien sûr, une grande quantité d'autres éléments graphiques et la solution de la rotation du ViewPort n'est pas envisageable.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 déc. 2006 à 21:05
Je pense pourtant qu'il faut utiliser la méthode RotateTransform de l'objet Graphics....

soit l'API GdipRotateWorldTransform

rien ne t'empeche de "tourner le monde", de dessiner ton texte, et de "remettre le monde en place"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous