Meilleur auteur de réponses
Rotation de Texte en mode Graphics

Question
-
Bonjour,
Sous VS 2010, VB.NET, Framework 4.0, dans une appli WinForm je voudrais écrire du texte incliné (à 90°) dans un contrôle graphique tel une PictureBox.
S'il est facile d'écrire horizontalement avec un g.DrawString(...), comment incliner le texte suivant un angle déterminé (90° dans mon cas) ?
Merci de votre réponse.
Cordialement
Alain
Réponses
-
Graphics possède des méthodes RotateTransform, TranslateTransform, ScaleTransform & co.
Donc pour écrire à 90°, il faut faire un RotateTransform de...90° ;-)
Maintenant, pour éviter de se perdre, il est bon de sauvegarder son état de de le restaurer avec Save et Restore(GaphicsState).
En gros, avant de faire des opérations de transformation, sauvegarder l'état dans un GraphicsState avec la méthode Save.
Faites toutes les transformations que vous voulez.
Faites un Restore pour revenir à l'état "normal", initial.
Puis vous pouvez recommencer ainsi de suite.L'idée est donc d'utiliser un référentiel temporaire pour ses dessins. C'est plus pratique ;-)
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse AchLog mardi 3 juillet 2012 16:58
Toutes les réponses
-
Graphics possède des méthodes RotateTransform, TranslateTransform, ScaleTransform & co.
Donc pour écrire à 90°, il faut faire un RotateTransform de...90° ;-)
Maintenant, pour éviter de se perdre, il est bon de sauvegarder son état de de le restaurer avec Save et Restore(GaphicsState).
En gros, avant de faire des opérations de transformation, sauvegarder l'état dans un GraphicsState avec la méthode Save.
Faites toutes les transformations que vous voulez.
Faites un Restore pour revenir à l'état "normal", initial.
Puis vous pouvez recommencer ainsi de suite.L'idée est donc d'utiliser un référentiel temporaire pour ses dessins. C'est plus pratique ;-)
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse AchLog mardi 3 juillet 2012 16:58
-
Merci Richard pour ces bonnes indications.
La manipulation des ces fonctions n'est pas très aisée à partir de leur seule description dans MSDN.
Existe t'il, à votre connaissance, un petit tutoriel ou quelques chose comme cela qui précise leur fonctionnement ?
Merci
Alain
-
Y'a bien mon livre (Au coeur de Visual Basic .NET) mais il est épuisé (comme moi aujourd'hui ;-)).
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone -
-
Pour ceux qui, comme moi, se posent des questions, voici à titre d'exemple le code que j'ai réalisé :
Private Sub RotateTexte(ByVal g As Graphics) g.DrawString("Bonjour", Font, Brushes.Blue, New PointF(0, 0)) ' Sauver l'état du contexte graphique Dim transState As GraphicsState = g.Save() '-- Modifier le contexte graphique g.TranslateTransform(0, 180) ' Translate de 180 pixels vers le bas g.RotateTransform(-90.0F) ' Rotate de 90° dans le sens trigo '-- Utiliser le nouveau contexte graphique g.DrawString("Bonjour 1", Font, Brushes.Red, New PointF(0, 0)) g.DrawString("Bonjour 2", Font, Brushes.Red, New PointF(0, 20)) g.DrawString("Bonjour 3", Font, Brushes.Red, New PointF(0, 40)) ' Restaure le contexte graphique initial g.Restore(transState) End Sub
Merci Richard pour m'avoir mis sur la piste.
Alain
-
Champagne ;-)
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone -