Salut Hervé,
Tout dépend de la configuration de ta picturebox, mais généralement si un coefficient multiplicateur fixe est la solution du problème... c'est qu'il manque un Screen.TwipsPerPixelX et un Screen.TwipsPerPixelY dans ta recette.
Sur Pic.CurrentY ou Pic.TextHeight("X") ?
Salut Hervé,
Private Sub Form_Load() 'PictureBox en Pixel Pic.ScaleMode = 3 Pic.CurrentY = 0 Pic.Print "ligne"; 1 Pic.CurrentY = Pic.TextHeight("X") Pic.Print "ligne"; 2 Pic.CurrentY = 2 * Pic.TextHeight("X") Pic.Print "ligne"; 3 y = 3 * Pic.TextHeight("X") * Pic.Height / Pic.ScaleHeight Htext = 256 iStr = ChrW(Htext) Pic.CurrentY = y Pic.Print iStr End Sub
ça fonctionne bien chez moi, pourvu que tu paramètres la picturebox en Pixel ou en Twip, sinon tu auras un coefficient de décalage.
Merci mais chez moi ça ne fonctionne pas :
la flèche n'est pas sur la 4ème ligne mais entre le 3ème et la 4ème
Etiquette.ScaleMode = 3 RowHeight = Etiquette.TextHeight("X") Etiquette.CurrentX = 0 Etiquette.CurrentY = 3 * RowHeight * Etiquette.Height / Etiquette.ScaleHeight
De toute façon ça fonctionne en dessinant la flèche donc j'ai ma solution.
Salut Hervé,
Peu importe, mais garde à l'esprit que TextOutW est une fonction GDI, et toutes coordonnées envoyées sont exprimés dans la configuration de la DLL (ici en pixels) et cette valeur doit être addaptée à la configuration de l'image affichée.
En config. TWIP :
TextOutw Pic.hdc, x \ Screen.TwipsPerPixelX, y \ Screen.TwipsPerPixelY, istr, Len(istr)