Rotation texte avec GDI+

cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 8 avril 2013 à 16:03
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013 - 10 avril 2013 à 08:44
Bonjour à tous,
J'essaye de dessiner sur une PictureBox un texte affecté d'une certaine rotation.
J'utilise le code suivant:
Private Sub Form_Load()
  Dim GpInput As GdiplusStartupInput
  Dim token As Long
  GpInput.GdiplusVersion = 1
  If GdiplusStartup(token, GpInput) <> Ok Then
    MsgBox "Error loading GDI+!", vbCritical
    Unload Me
  End If
  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(Picture1.hDC, graphics)
  Call GdipCreateSolidFill(vbRed, brush)
  Call GdipCreateFontFamilyFromName(StrConv("Courier", vbUnicode), 0, fontFam)
  lm.lfItalic = True
  lm.lfEscapement = 450&
  lm.lfOrientation = 450&
  lm.lfHeight = 40
  lm.lfWidth = 35
  lm.lfWeight = 20
  Call GdipCreateFontFromLogfontW(Picture1.hDC, lm, curFont)
  rcOrigin.Left = 50
  rcOrigin.Top = 50
  Call GdipDrawString(graphics, str, strlen, curFont, rcOrigin, 0, brush)
  Call GdipDeleteFont(curFont)
  Call GdipDeleteFontFamily(fontFam)
  Call GdipDeleteBrush(brush)
  Call GdipDeleteGraphics(graphics)
End Sub

Malheureusement, cela ne fonctionne pas.
Un spécialiste du GDI+ pourrait-il me donner son avis?
Jacques13

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 avril 2013 à 21:01
BVonjour,
GDI n'a pas pour vocation celle de travailler sur des textes, mais sur des images. Tu peux bien évidemment "pixeliser" le texte, puis exercer une rotation dur l'image résultant de cette "pixelisation". Le résultat sera on ne peut plus "pauvre".
Abandonne donc une telle idée et commence à t'intéresser à d'autres fonctions de l'Api de windows, telle CreateFontIndirect.
Voilà voilà.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
9 avril 2013 à 22:23
Bonjour Ucfoutu,
Je suis d'accord avec toi, GDI32 est bien plus simple à utiliser que GDI+
Malheureusement, je suis obligé de faire appel à GDI+ car il est le seul à gérer l'alpha blending qui m'est indispensable.
Es-tu vraiment sûr que la rotation de texte est impossible?
0
Utilisateur anonyme
10 avril 2013 à 02:32
Bonjour,

Je ne suis vraiment pas sur que cela puisse t'être utile; mais j'aime mieux le signaler que de regretter de ne pas l'avoir. Ce lien mène à un exemple en VB.net. Si tu ne peux pas ou si tu ne veux pas travailler en VB.net, tu peux néanmoins consulter les sources avec n'importe quel éditeur de texte qui lit le format texte (txt). Il y a d'autres fichiers au format xml, sans l'extension xml.
0
cs_jacques13 Messages postés 252 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 29 juin 2013
10 avril 2013 à 08:44
Bonjour Cmarcote,
Peut-être ai-je mal lu, mais l'exemple que tu cites ne semble pas évoquer la rotation des textes.
0
Rejoignez-nous