OVH Cloud OVH Cloud

Label vertical

12 réponses
Avatar
Annie
Le Thu, 20 Sep 2007 16:02:03 +0200, Annie
<Annie@discussions.microsoft.com> a écrit:

> Je n'ai pas beaucoup de connaissance en ce domaine!
> Y-aurait-il pas une façon plus simple de procéder à faire tourner une
> étiquette à 90°, 180°, 270°???
>
>>
> "Gilles TOURREAU" wrote:
>
>> Créer une classe qui dérive de Label et de mettez ce bout de code qui
dessine du texte à -90° :

Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
pe.Graphics.RotateTransform(-90)
pe.Graphics.TranslateTransform(-Height, 0)

Using sb As System.Drawing.SolidBrush = New SolidBrush(ForeColor)
pe.Graphics.DrawString(Text, Font, sb, 0, 0)
End Using
End Sub

Vous n'avez plus qu'à utiliser ce nouveau contrôle dans vos fenêtres...

Cordialement

--
Je n'ai pas beaucoup de connaissance en ce domaine, je débute depuis
quelques mois! J'ai réussi à mettre ce code dans une classe!

Mais comment m'en servir dans mon programme ?
Comment m'en servir avec une étiquette ?

J'aurai besoin d'aide S.V.P.

Merci!

2 réponses

1 2
Avatar
Annie
J'ai déjà plusieurs livres de lus mais il y a tellement des choses à retenir
qu'on en perds des bouts! Alors j'essaie d'apprendre ce qui est le plus utile
pour moi pour l'instant!!! Veuillez m'en excuser!!!

J'apprends quelquechose de très intéressant avec vous qui va me servir
beaucoup dans le futur! Mais ce n'est pas évident!!

J'ai réussi à créer cette nouvelle classe avec une certaine difficulté et il
n'y a pas d'erreur! Sauf que le contrôle ne fait plus ce qu'il faisait
auparavant! Je ne vois que les 2-4 premières lettres selon l'alignement
choisit! Pour les autres alignements, je ne vois plus rien de mon texte!

Que faire ? Je vous envoi le code de la classe :


Public Class LabelVertical
Inherits Label


Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
Using sf As StringFormat = New StringFormat()
If TextAlign = ContentAlignment.TopCenter Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Center
ElseIf TextAlign = ContentAlignment.TopLeft Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.TopRight Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.MiddleLeft Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.MiddleCenter Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.MiddleRight Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.BottomLeft Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.BottomCenter Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.BottomRight Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Far
End If

pe.Graphics.RotateTransform(-90)
pe.Graphics.TranslateTransform(-Height, 0)

Using sb As System.Drawing.SolidBrush = New SolidBrush(ForeColor)
pe.Graphics.DrawString(Text, Font, sb, ClientRectangle, sf)
End Using
End Using
End Sub
End Class


Est-ce correct? Où est mon problème?

Merci!
Avatar
Gilles TOURREAU
Le Mon, 01 Oct 2007 22:46:00 +0200, Annie
a écrit:

J'ai déjà plusieurs livres de lus mais il y a tellement des choses à
retenir
qu'on en perds des bouts! Alors j'essaie d'apprendre ce qui est le plus
utile
pour moi pour l'instant!!! Veuillez m'en excuser!!!

J'apprends quelquechose de très intéressant avec vous qui va me servir
beaucoup dans le futur! Mais ce n'est pas évident!!

J'ai réussi à créer cette nouvelle classe avec une certaine difficulté
et il
n'y a pas d'erreur! Sauf que le contrôle ne fait plus ce qu'il faisait
auparavant! Je ne vois que les 2-4 premières lettres selon l'alignement
choisit! Pour les autres alignements, je ne vois plus rien de mon texte!

Que faire ? Je vous envoi le code de la classe :


Public Class LabelVertical
Inherits Label


Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
Using sf As StringFormat = New StringFormat()
If TextAlign = ContentAlignment.TopCenter Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Center
ElseIf TextAlign = ContentAlignment.TopLeft Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.TopRight Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.MiddleLeft Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.MiddleCenter Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.MiddleRight Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.BottomLeft Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.BottomCenter Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.BottomRight Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Far
End If

pe.Graphics.RotateTransform(-90)
pe.Graphics.TranslateTransform(-Height, 0)

Using sb As System.Drawing.SolidBrush = New
SolidBrush(ForeColor)
pe.Graphics.DrawString(Text, Font, sb, ClientRectangle,
sf)
End Using
End Using
End Sub
End Class


Est-ce correct? Où est mon problème?

Merci!







Solution corrigée et testée :

If TextAlign = ContentAlignment.TopCenter Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Center
ElseIf TextAlign = ContentAlignment.TopLeft Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.TopRight Then
sf.Alignment = StringAlignment.Far
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.MiddleLeft Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.MiddleCenter Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
ElseIf TextAlign = ContentAlignment.MiddleRight Then
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Far
ElseIf TextAlign = ContentAlignment.BottomLeft Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Near
ElseIf TextAlign = ContentAlignment.BottomCenter Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Center
ElseIf TextAlign = ContentAlignment.BottomRight Then
sf.Alignment = StringAlignment.Near
sf.LineAlignment = StringAlignment.Far
End If

PS : Evitez de poster plusieurs fois la même demande dans un forum...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
1 2