Utilisateur anonyme
-
17 juil. 2004 à 22:53
Utilisateur anonyme -
29 avril 2005 à 19:04
Bonjour.
Je voudrai afficher du texte vertical comme dans le menu démarrer.
Mais il faudrai qu'il s'affiche comme on fais pour la fonction 'print'
C'est a dire avec left et top et le laisse font transparent et sans ocx ou dll
Bref, comme si on appelais 'print' et que le texte s'écris verticalement
cs_Geff
Messages postés192Date d'inscriptionvendredi 2 mars 2001StatutMembreDernière intervention10 janvier 2006 18 juil. 2004 à 02:01
Pour écrire verticalement il faut que tu passes bien evidemment par les APIs et dans un élan de générosité je vais te donner un petit bout de code ki te permet d'afficher un texte "verticalement"! J'ai retrouvé ce petit bout de code ke j'avais fait il y'a plus d'un an pour un certain pcpunch! :p
Voici donc ::
'---Les APIs
Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function CreateFont Lib "GDI32" Alias "CreateFontA" (ByVal H As Long, ByVal w As Long, ByVal E As Long, ByVal O As Long, ByVal w As Long, ByVal i As Long, ByVal U As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject As Long) As Long
Private Declare Function TextOut Lib "GDI32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Integer, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function SetMapMode Lib "GDI32" (ByVal hdc As Long, ByVal nMapMode As Long) As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Const MM_LOMETRIC = 2
Private Const LOGPIXELSY = 90
Dim HFont As Long, HFontOld As Long, MapModePrevious As Long
'---La structure de stockage du texte
Private Type TexteV
Texte As String
x As Integer
y As Integer
Police As String
Italique As Boolean
Gras As Boolean
Souligne As Boolean
Barre As Boolean
Taille As Integer
Angle As Integer
End Type
dim Texte as TexteV
'---La procédure d'affichage du texte
sub DrawAngleText()
Voila tout, donc bien évidemment il te faut un picturebox de préférence a fond blanc car par défaut on écrait en noir, enfin ca c a toi de voir en changeant les propriétés forecolr et backcolor du picturebox! Donc normalement ce petit exemple marche, je l'ai retouché histoire de raccourcir ce ke j'avais déja!
cs_dals
Messages postés10Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 septembre 2005 29 avril 2005 à 12:31
Oulala que de complexitude:
moi charles je me sers de ca:
Public Sub RotateStr(ByVal g As System.Drawing.Graphics, ByVal Texte As String, ByVal Pt0 As PointF, ByVal RectString As RectangleF, ByVal MyFont As Font, ByVal Brush As Brush, ByVal Angle As Int16)
Dim gContainer As System.Drawing.Drawing2D.GraphicsContainer
Dim myMatrix As Drawing2D.Matrix
gContainer = g.BeginContainer()
myMatrix = g.Transform()
myMatrix.RotateAt(Angle, Pt0, Drawing2D.MatrixOrder.Append)
g.Transform = myMatrix
g.DrawString(Texte, MyFont, Brush, RectString)
g.EndContainer(gContainer)
End Sub
cs_Geff
Messages postés192Date d'inscriptionvendredi 2 mars 2001StatutMembreDernière intervention10 janvier 2006 29 avril 2005 à 13:57
dals,
Il me semble que ta réponse concerne la technologie .net, donc elle ne convient pas à VB6, mais en effet pour VB.net l'écriture d'un texte oblique est bien plus aisé. Merci pour ta contribution pour VB.net