bonjour,

un nouveau problème, un de plus lol

Voila j'utilise GDI+ pour l'affichage d'un aperçu d'étiquette. Seulement je dois faire des rotations d'éléments (textes) sur mon aperçu.

Pour cela j'utilise les matrices avec cet exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Private Sub PicEtiquette_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PicEtiquette.Paint
        ' Tester la taille de la PictureBox
        Dim parametre As String
        Dim dateexp As String
 
        Dim ft As Font = New Font("arial", 10, FontStyle.Bold, GraphicsUnit.Pixel)
        Dim Size As New Size(MyEtiquette.SizeX * myZoom, MyEtiquette.SizeY * myZoom)
        Dim mymatrix As New Drawing2D.Matrix
        Dim pt As PointF
 
        If Size.Width < 5 Then Size.Width = 5
        If Size.Height < 5 Then Size.Height = 5
        If PicEtiquette.Size <> Size Then PicEtiquette.Size = Size
        ' dessiner l'etiquette
        e.graphics.ScaleTransform(myZoom, myZoom)
 
        ' 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)
            e.Graphics.Transform.Reset()
            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)
            e.Graphics.Transform.Reset()
            mymatrix.Reset()
        End If
La rotation selon l'angle "OrientParam" se fait sans probleme, par contre le point d'origine (MyEtiquette.XParam, MyEtiquette.Yparam) n'est pas bon. De plus ce point de rotation est sensé être fixé (a distance constante des bords de l'image qqsoit le zoom appliqué), hors ce n'est pas le cas.

En effet en fonction du zoom le text "transformé" se déplace sur le dessin, par contre si il n'y a pas de rotation (OrientParam=0) alors le texte est a la bon place.

qq1 a une idée du problème? perso je sèche dessus depuis hier et toujours pas d'éclair de génie :-(

a l'avance, merci