Text vertical [Résolu]

Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 17 juil. 2004 à 22:53 - Dernière réponse : Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention
- 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

ChR
Afficher la suite 

8 réponses

Meilleure réponse
cs_Geff 192 Messages postés vendredi 2 mars 2001Date d'inscription 10 janvier 2006 Dernière intervention - 18 juil. 2004 à 02:01
3
Merci
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()

pic.currentx=x
pic.currenty=y

with Texte

MapModePrevious = SetMapMode(Pic.hdc, MM_LOMETRIC)
HFont = CreateFont(.Taille, 0&, .Angle, .Angle, CInt(.Gras), CInt(.Italique), CInt(.Souligne), CInt(.Barre), 0&, 0&, 0&, 0&, 0&, .Police)
HFontOld = SelectObject(Pic.hdc, HFont)
TextOut Pic.hdc, 4 * .x, -4 * .y, .Texte, Len(.Texte)
SetMapMode Pic.hdc, MapModePrevious
SelectObject Pic.hdc, HFontOld
DeleteObject HFont

end with

end sub

'---Création du texte
sub Form_Load()

With Texte
.Texte = "Bonjour Madame!"
.Police = "Arial"
.Taille = Int(Rnd * 200)
.Angle = -450
.x = Int(Rnd * Pic.ScaleWidth / 2)
.y = Int(Rnd * Pic.ScaleHeight / 2)
End With

end sub

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!

Have a Good Code
#
Geff >:)

Merci cs_Geff 3

codes-sources a aidé 81 internautes ce mois-ci

Meilleure réponse
cs_dals 10 Messages postés lundi 24 janvier 2005Date d'inscription 26 septembre 2005 Dernière intervention - 29 avril 2005 à 12:31
3
Merci
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

j'y fais appel kom ca:

RotateStr(MonObjetGraphique,"texte vertical", MonPointF, MonRectangleF, MaPolice, MaBrosse, 90)

Voila si ca peut aider.. j'ai passé du temps à trouver un truc kom ca

Merci cs_dals 3

codes-sources a aidé 81 internautes ce mois-ci

Scalpweb 1475 Messages postés samedi 13 mars 2004Date d'inscription 5 mai 2010 Dernière intervention - 17 juil. 2004 à 23:25
0
Merci
Il y a des source squi font ça sur le site
Scalpweb 1475 Messages postés samedi 13 mars 2004Date d'inscription 5 mai 2010 Dernière intervention - 18 juil. 2004 à 11:52
0
Merci
Bravo Geff !
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 19 juil. 2004 à 09:24
0
Merci
Merci Geff

ChR
cs_Geff 192 Messages postés vendredi 2 mars 2001Date d'inscription 10 janvier 2006 Dernière intervention - 29 avril 2005 à 13:57
0
Merci
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


<HR>

main(k){float i,j,r,x,y=-16;while(puts(""),y++<15)for(x
0;x++<84;putchar(" .:-;!/>)|&IH%*#"[k&15]))for(ik=r=0;
j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);}

# GEFF
cs_dals 10 Messages postés lundi 24 janvier 2005Date d'inscription 26 septembre 2005 Dernière intervention - 29 avril 2005 à 14:00
0
Merci
ok pas de P!

C'est quand même pas top d'avoir mélangé les 2 VB sur un même forum: j'avais pas vu que le topic étais uniquement pour VB6
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 29 avril 2005 à 19:04
0
Merci
Je suis passé au .NET depuis quelques temps déjà
Le code de dals me convient donc parfaitement
Donc
Merci Beaucoup dals

ChRb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.