cs_jacques13
Messages postés252Date d'inscriptionmardi 3 juin 2003StatutMembreDernière intervention29 juin 2013
-
28 déc. 2006 à 18:22
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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