j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce
soit sur l'imprimante ou une pictureBox
Par contre je n'arrive pas à définir le type de police à utiliser
je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas
comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * LF_FACESIZE
End Type
De plus le type Byte peut-il être rempli par un booléen ?
par exemple lfUnderline = true ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour driss hanib, driss hanib a écrit :
Bonjour à tous,
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce soit sur l'imprimante ou une pictureBox Par contre je n'arrive pas à définir le type de police à utiliser je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * LF_FACESIZE End Type
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Merci pour votre aide
Il faut terminer le nom de la police par un zéro binaire, par exemple :
lfFaceName = "Arial" & chr$(0)
Le type Byte peut être renseigné par un booléen, mais il faut savoir que
Pour l'API çela ne pose pas de problème, ce qui est différent de zéro est considéré comme True.
Ci joint un code que j'ai posté en réponse à Mr X en octobre dernier : (J'ai changé le nom ... ;-) --------------------------------------------------------------------
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * 32 End Type
Private Declare Function CreateFontIndirect Lib "gdi32" _ Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function SelectObject Lib "gdi32" _ (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function TextOut Lib "gdi32" _ Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, _ ByVal Y As Long, ByVal lpString As String, _ ByVal nCount As Long) As Long Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long
Private Sub Command1_Click() DrawText Me, "Je m'appelle", 40, 40, 2700, "Times New Roman" DrawText Me, "Driss Hanib :-)", 40, 160, 900, "Comic Sans MS" End Sub
Private Sub DrawText(Pict As Object, Txt As String, _ X As Long, Y As Long, Angle As Long, _ Police As String) Dim hFont As Long, OldHdc As Long Dim lf As LOGFONT, lResult As Long
lResult = TextOut(Pict.hdc, X, Y, Txt, Len(Txt)) lResult = SelectObject(Pict.hdc, OldHdc) lResult = DeleteObject(hFont) End Sub
'Tu peux faire varier l'angle de 0 à 3600, ça fonctionne sur les feuilles 'et les PictureBox (il faut la propriété hDc).
-- Cordialement,
Jacques.
Bonjour driss hanib,
driss hanib a écrit :
Bonjour à tous,
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce
soit sur l'imprimante ou une pictureBox
Par contre je n'arrive pas à définir le type de police à utiliser
je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas
comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * LF_FACESIZE
End Type
De plus le type Byte peut-il être rempli par un booléen ?
par exemple lfUnderline = true ?
Merci pour votre aide
Il faut terminer le nom de la police par un zéro binaire, par exemple :
lfFaceName = "Arial" & chr$(0)
Le type Byte peut être renseigné par un booléen, mais il faut savoir que
Pour l'API çela ne pose pas de problème, ce qui est différent de zéro
est considéré comme True.
Ci joint un code que j'ai posté en réponse à Mr X en octobre dernier :
(J'ai changé le nom ... ;-)
--------------------------------------------------------------------
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * 32
End Type
Private Declare Function CreateFontIndirect Lib "gdi32" _
Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" _
(ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function TextOut Lib "gdi32" _
Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, _
ByVal Y As Long, ByVal lpString As String, _
ByVal nCount As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" _
(ByVal hObject As Long) As Long
Private Sub Command1_Click()
DrawText Me, "Je m'appelle", 40, 40, 2700, "Times New Roman"
DrawText Me, "Driss Hanib :-)", 40, 160, 900, "Comic Sans MS"
End Sub
Private Sub DrawText(Pict As Object, Txt As String, _
X As Long, Y As Long, Angle As Long, _
Police As String)
Dim hFont As Long, OldHdc As Long
Dim lf As LOGFONT, lResult As Long
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce soit sur l'imprimante ou une pictureBox Par contre je n'arrive pas à définir le type de police à utiliser je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * LF_FACESIZE End Type
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Merci pour votre aide
Il faut terminer le nom de la police par un zéro binaire, par exemple :
lfFaceName = "Arial" & chr$(0)
Le type Byte peut être renseigné par un booléen, mais il faut savoir que
Pour l'API çela ne pose pas de problème, ce qui est différent de zéro est considéré comme True.
Ci joint un code que j'ai posté en réponse à Mr X en octobre dernier : (J'ai changé le nom ... ;-) --------------------------------------------------------------------
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * 32 End Type
Private Declare Function CreateFontIndirect Lib "gdi32" _ Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long Private Declare Function SelectObject Lib "gdi32" _ (ByVal hdc As Long, ByVal hObject As Long) As Long Private Declare Function TextOut Lib "gdi32" _ Alias "TextOutA" (ByVal hdc As Long, ByVal X As Long, _ ByVal Y As Long, ByVal lpString As String, _ ByVal nCount As Long) As Long Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long
Private Sub Command1_Click() DrawText Me, "Je m'appelle", 40, 40, 2700, "Times New Roman" DrawText Me, "Driss Hanib :-)", 40, 160, 900, "Comic Sans MS" End Sub
Private Sub DrawText(Pict As Object, Txt As String, _ X As Long, Y As Long, Angle As Long, _ Police As String) Dim hFont As Long, OldHdc As Long Dim lf As LOGFONT, lResult As Long
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de vérifier sur un exemple.
Private Sub Command1_Click() Dim B As Byte B = True Label1 = B End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click() Dim BB As Boolean BB = 0 If BB Then Label1 = "true" Else Label1 = "false" End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans leur langage. Cela nous donne les fameuses lignes if prédicat=true then ... ce qui revient à dire s'il est vrai que le prédicat est vrai alors ...
Bonjour,
De plus le type Byte peut-il être rempli par un booléen ?
par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de
vérifier sur un exemple.
Private Sub Command1_Click()
Dim B As Byte
B = True
Label1 = B
End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click()
Dim BB As Boolean
BB = 0
If BB Then Label1 = "true" Else Label1 = "false"
End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère
aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans
leur langage. Cela nous donne les fameuses lignes
if prédicat=true then ...
ce qui revient à dire
s'il est vrai que le prédicat est vrai alors ...
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de vérifier sur un exemple.
Private Sub Command1_Click() Dim B As Byte B = True Label1 = B End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click() Dim BB As Boolean BB = 0 If BB Then Label1 = "true" Else Label1 = "false" End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans leur langage. Cela nous donne les fameuses lignes if prédicat=true then ... ce qui revient à dire s'il est vrai que le prédicat est vrai alors ...
Jacques93
Bonjour Patrice Henrio, Patrice Henrio a écrit :
Bonjour,
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de vérifier sur un exemple.
Private Sub Command1_Click() Dim B As Byte B = True Label1 = B End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click() Dim BB As Boolean BB = 0 If BB Then Label1 = "true" Else Label1 = "false" End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans leur langage. Cela nous donne les fameuses lignes if prédicat=true then ... ce qui revient à dire s'il est vrai que le prédicat est vrai alors ...
D'accord avec toi, mais en l'occurrence, la question de Driss portant sur la structure LOGFONT utilisée par l'API CreateFontIndirect, on est donc en C ... ;-)
Par ailleurs, il existe les fonctions de conversion. Par exemple :
De plus le type Byte peut-il être rempli par un booléen ?
par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de
vérifier sur un exemple.
Private Sub Command1_Click()
Dim B As Byte
B = True
Label1 = B
End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click()
Dim BB As Boolean
BB = 0
If BB Then Label1 = "true" Else Label1 = "false"
End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère
aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans
leur langage. Cela nous donne les fameuses lignes
if prédicat=true then ...
ce qui revient à dire
s'il est vrai que le prédicat est vrai alors ...
D'accord avec toi, mais en l'occurrence, la question de Driss portant
sur la structure LOGFONT utilisée par l'API CreateFontIndirect, on est
donc en C ... ;-)
Par ailleurs, il existe les fonctions de conversion. Par exemple :
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Pour ta question sur le booléen je dirai oui mais en fait il suffit de vérifier sur un exemple.
Private Sub Command1_Click() Dim B As Byte B = True Label1 = B End Sub
Et on voit que true vaut 255 en byte, soit -1 en complément à 2
De la même façon false vaut 0
Réciproquement
Private Sub Command1_Click() Dim BB As Boolean BB = 0 If BB Then Label1 = "true" Else Label1 = "false" End Sub
permet de voir que seule la valeur 0 est équivalent à false.
Ceci étant je suis contre l'utilisation des booléens comme des entiers chère aux programmeurs en C qui, les pauvres, ne disposent pas de ce type dans leur langage. Cela nous donne les fameuses lignes if prédicat=true then ... ce qui revient à dire s'il est vrai que le prédicat est vrai alors ...
D'accord avec toi, mais en l'occurrence, la question de Driss portant sur la structure LOGFONT utilisée par l'API CreateFontIndirect, on est donc en C ... ;-)
Par ailleurs, il existe les fonctions de conversion. Par exemple :
Merci à Jacques93 et Patrice Henrio pour leur réponses rapides et complètes..
je vais mettre cela immédiatment en pratique
Driss "driss hanib" a écrit dans le message de news: %
Bonjour à tous,
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce soit sur l'imprimante ou une pictureBox Par contre je n'arrive pas à définir le type de police à utiliser je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * LF_FACESIZE End Type
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?
Merci pour votre aide
Driss
Merci à Jacques93 et Patrice Henrio pour leur réponses rapides et
complètes..
je vais mettre cela immédiatment en pratique
Driss
"driss hanib" <dhanib@club-internet.fr> a écrit dans le message de news:
%23Nocsy4aGHA.3444@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que
ce soit sur l'imprimante ou une pictureBox
Par contre je n'arrive pas à définir le type de police à utiliser
je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas
comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * LF_FACESIZE
End Type
De plus le type Byte peut-il être rempli par un booléen ?
par exemple lfUnderline = true ?
Merci à Jacques93 et Patrice Henrio pour leur réponses rapides et complètes..
je vais mettre cela immédiatment en pratique
Driss "driss hanib" a écrit dans le message de news: %
Bonjour à tous,
j'ai trouvé une proc pour pouvoir écrire un texte avec une rotation, que ce soit sur l'imprimante ou une pictureBox Par contre je n'arrive pas à définir le type de police à utiliser je crois que c'est dans le paramètre 'lfFaceName', mais je ne sais pas comment le remplir
Quelqu'un a-t-il éjà utilisé ce type ?
Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * LF_FACESIZE End Type
De plus le type Byte peut-il être rempli par un booléen ? par exemple lfUnderline = true ?