Paint Event

Signaler
Messages postés
110
Date d'inscription
jeudi 9 mai 2002
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
-
Bonjour,

J'ai un panel avec une image .tif en backgroud. J'essais d'ajouter du texte dans mon image mais l'affichage ne se fait pas correctement au premier appel de la fonction. Le tout rendre dans l'ordre au second appel cependant.

En regardant de plus prêt, j'ai remarqué que mon objet retourné (ClipRectangle) n'a pas les bonnes dimensions.

Quelqu'un a une idée?

Merci

Private Sub MAP_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MAP.Paint

Dim J As Integer
Dim PositionY As Single

Dim Lettre As String
Dim Font_Grille As New Font("Courrier new", 10, FontStyle.Bold, GraphicsUnit.Pixel)
Dim Brush_grille As New SolidBrush(Color.Black)
Dim Text_Format As New StringFormat()
Dim Rect_Text As New RectangleF()
Dim g As Graphics = e.Graphics

Text_Format.Alignment = StringAlignment.Center
Text_Format.LineAlignment = StringAlignment.Center

Dim value As Rectangle
value = e.ClipRectangle 'Un watch sur value m'indique que le rectangle n'a pas la meme dimension au premier appel et aux subséquents!

' Si on est avec une origine située en haut
If TABLE_Prop.Get_Origine() 0 Or TABLE_Prop.Get_Origine() 1 Then
PositionY = 30
' Ajout des lettres
For J = 0 To TABLE_Prop.Get_Y - 1
' Si on est avant la lettre I
If J < 8 Then
Lettre = Convert.ToChar(J + 65)
Else
Lettre = Convert.ToChar(J + 66)
End If

g.DrawString(Lettre, Font_Grille, Brush_grille, 12, PositionY, Text_Format)
g.DrawString(Lettre, Font_Grille, Brush_grille, 488, PositionY, Text_Format)
'End If
PositionY += 460 / TABLE_Prop.Get_Y
Next
Else
PositionY = 30
' Ajout des lettres
For J = TABLE_Prop.Get_Y - 1 To 0 Step -1
' Si on est avant la lettre I
If J < 8 Then
Lettre = Convert.ToChar(J + 65)
Else
Lettre = Convert.ToChar(J + 66)
End If

g.DrawString(Lettre, Font_Grille, Brush_grille, 12, PositionY, Text_Format)
g.DrawString(Lettre, Font_Grille, Brush_grille, 488, PositionY, Text_Format)
'End If
PositionY += 460 / TABLE_Prop.Get_Y
Next
End If

Brush_grille.Dispose()
Font_Grille.Dispose()
Text_Format.Dispose()

end sub

1 réponse

Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
Bonjour

J'ai simplifié ton code mais tu devrais te baser sur ça :

    Private Sub Map_Paint_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Map.Paint
        e.Graphics.DrawString("TEST", New Font("Arial", 12.0!, FontStyle.Regular, GraphicsUnit.Point, CType(0, Byte)), Brushes.Red, 10, 10)
    End Sub


PS : Ça marche même avec une image de fond.