waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013
-
12 févr. 2008 à 00:12
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
19 févr. 2008 à 09:43
Bonjour au forum,
Voila mon probleme, j'utilise GDI+ pour dessiner un aperçu d'une etiquette a imprimer.
Mon soucis viens de la gestion des rotations, j'utilise les matrix pour faire mes rotations, selon le code suivant:
#CODE#
If parametre = Nothing Then
mymatrix.RotateAt(MyEtiquette.OrientParam, New Point(MyEtiquette.XParam, MyEtiquette.Yparam))
e.Graphics.Transform = mymatrix
mymatrix.Reset()
e.Graphics.DrawString("#############", Me.Font, Brushes.Black, MyEtiquette.XParam, MyEtiquette.Yparam)
e.Graphics.ScaleTransform(myZoom, myZoom)
Else
mymatrix.RotateAt(MyEtiquette.OrientParam, New Point(MyEtiquette.XParam, MyEtiquette.Yparam))
e.Graphics.Transform = mymatrix
e.Graphics.DrawString(parametre, Me.Font, Brushes.Black, MyEtiquette.XParam, MyEtiquette.Yparam)
e.Graphics.ScaleTransform(myZoom, myZoom)
End If
#CODE#
La rotation l'effectue sans soucis sauf que lorsque je zoom ou dezoom, l'etiquette se met a l'echelle sauf les elements qui ont subit la rotation. Ils reste en poistion et en taille fixe...
Si je vire les rotations les zoom et dézoom sont alors pleinement fonctionnels
waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013 12 févr. 2008 à 16:50
Bien vu Renfield... cela ameliore la chose, mais c pas encore parfait car quand je modifie les positions X ou Y des texts a dessiner, cela decale le text en fonction du zoom appliqué...
je sais, c'est pas clair, bon pour ("essayé") d'être plus clair:
- normalement le text doit etre a distance constante des differents bords du dessin et ce, qqsoit le zoom appliqué.
- dans mon cas, le text derive sur le dessin en fonction du zoom
voici mon code:
' Parametre
If parametre = Nothing Then
mymatrix.RotateAt(MyEtiquette.OrientParam, New Point(MyEtiquette.XParam, MyEtiquette.Yparam))
e.Graphics.Transform = mymatrix
e.Graphics.ScaleTransform(myZoom, myZoom)
e.Graphics.DrawString("#############", ft, Brushes.Black, MyEtiquette.XParam, MyEtiquette.Yparam)
mymatrix.Reset()
Else
mymatrix.RotateAt(MyEtiquette.OrientParam, New Point(MyEtiquette.XParam, MyEtiquette.Yparam))
e.Graphics.Transform = mymatrix
e.Graphics.ScaleTransform(myZoom, myZoom)
e.Graphics.DrawString(parametre, ft, Brushes.Black, MyEtiquette.XParam, MyEtiquette.Yparam)
mymatrix.Reset()
End If
' date expiration
If dateexp = Nothing Then
mymatrix.RotateAt(MyEtiquette.OrientExp, New Point(MyEtiquette.XExp, MyEtiquette.YExp))
e.Graphics.Transform = mymatrix
e.Graphics.ScaleTransform(myZoom, myZoom)
e.Graphics.DrawString(MyEtiquette.TextExp & " " & "##/####", ft, Brushes.Black, MyEtiquette.XExp, MyEtiquette.YExp)
mymatrix.reset()
Else
mymatrix.RotateAt(MyEtiquette.OrientExp, New Point(MyEtiquette.XExp, MyEtiquette.YExp))
e.Graphics.Transform = mymatrix
e.Graphics.ScaleTransform(myZoom, myZoom)
e.Graphics.DrawString(MyEtiquette.TextExp & " " & dateexp, ft, Brushes.Black, MyEtiquette.XExp, MyEtiquette.YExp)
mymatrix.reset()
End If
C'est loin d'être parfait...et pour info, g mis "mymatrix.reset()" pour réinitialiser les transformation car sinon il garde comme base la transformation précedente
waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013 13 févr. 2008 à 16:55
hello Renfield,
Ta proposition ne marche pas.... la dérive en fonction du zoom est toujours la et le point de rotation ne correspond pas aux valeur de Xparam et Yparam
waspy59
Messages postés189Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention15 mai 2013 15 févr. 2008 à 12:28
re,
J'ai deja testé un peu toutes les possibilité est toujours le même resultat de dérive (dans le meilleur des cas) sinon rien ne se passe.
Je me demandé si il serais pas plus simple de dessiner chaque text sur un dessin temporaire (ajusté en taille au text) et ensuite de faire les tranformations de ce dessin temporaire avant de l'integrer au dessin proprement dit...
je sais je suis pas très clair... pour ceux qui on compris mon raisonnement, vous en pensez quoi?