Paint Event

cs_Charlie Messages postés 110 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 11 mars 2010 - 11 mars 2010 à 20:51
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 - 12 mars 2010 à 14:43
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
A voir également:

1 réponse

mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
12 mars 2010 à 14:43
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.
0
Rejoignez-nous