DRAWING PICTUREBOX

Résolu
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 - 25 juil. 2009 à 11:12
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 - 26 juil. 2009 à 08:39
BONJOUR,
on m'a communiquer ce code afin de dessiner un point dans une image :

Private Sub Cam_AVT_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Cam_AVT.Click
If e.Button = Windows.Forms.MouseButtons.Left Then
Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, e.X - 2, e.Y - 2, 8, 8)


End If
End Sub

il fonctionne très bien par contre j'aimerai que losque que je clique dans un item d'une listview
il me dessine un point de la meme manière .

j'ai essayer juste de faire ca:

Private Sub lstGEOREF_DBF_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstGEOREF_DBF.DoubleClick
'' TabControl1.TabPages.Item(0).
ToolStripStatusLabel3.Text = lstGEOREF_DBF.SelectedIndices(0).ToString
Dim ITEMCLIQUER As Integer = 0
ITEMCLIQUER = ToolStripStatusLabel3.Text
X_Local = lstGEOREF_DBF.Items(ITEMCLIQUER).SubItems(29).Text.ToString()
Y_Local = lstGEOREF_DBF.Items(ITEMCLIQUER).SubItems(30).Text.ToString()

TabControl1.SelectedIndex = 0

Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, X_Local - 2, Y_Local - 2, 6, 6)

If e.Button = Windows.Forms.MouseButtons.Left Then
Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, e.X - 2, e.Y - 2, 8, 8)


End If

End Sub

il me sort une erreur type "button n'est pas un membre de system.System.EventArgs"...
peut on faire appel à la 1ere private sub Cam_AVT_Click?

merci
cyrille

10 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juil. 2009 à 11:30
Dans ce code, tu vas dessiner 2 rectangles.

Le code du dessin du second rectangle est un copier/coller du code de la première procédure :
If e.Button = Windows.Forms.MouseButtons.Left Then
Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, e.X - 2, e.Y - 2, 8, 8)

As-tu besoin de ce code? N'as-tu pas oublier simplement de le supprimer ???


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
phila38 Messages postés 11 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 25 juillet 2009
25 juil. 2009 à 12:49
Bonjour,

Quel que soit ton besoin, la réponse simple à ta quetion est :

remplace ByVal e As System.EventArgs
par ByVal e As System.Windows.Forms.MouseEventArgs

cela te permettra de caster un EventArgs en MouseEventArgs (la vraie classe de e).
la classe MouseEventArgs contient la propriété "Button", pas la classe EventArgs

j'ignore pourquoi l'éditeur n'insère pas l'argument e avec le bon type directement.
3
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
25 juil. 2009 à 11:14
il y a une erreur dans mon code dans la 2ème private lstGEOREF_DBF_DoubleClick

e.x et e.y j'ai mis e.X_Local et e.Y_Local
merci
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
25 juil. 2009 à 11:36
en faite il y a un:
tabcontrole => tabpage1 => picturebox
=> tabpage2 => listview

lorsque tu est sur tabpage1 tu peux saisir un point dans l'image et enregistrer les coordonnées

tabpage2 tu recup les coordonnées et lorsque doubleclick je viens sur
tabpage1 et je creer un point

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juil. 2009 à 12:11
LE soucis n'est pas là !

Dans le code du double click que tu nous donne ici, il y a 2 instructions pour dessiner un rectangle :

Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, X_Local - 2, Y_Local - 2, 6, 6)

If e.Button = Windows.Forms.MouseButtons.Left Then
Cam_AVT.CreateGraphics.FillRectangle(Brushes.Red, e.X - 2, e.Y - 2, 8, 8)

La partie de code contenant la seconde instruction est un simple copier/coller du code de l'autre exemple. Hors cette partie de code qui te génère un message d'erreur car effectivement la classe System.EventArgs ne contient pas de propriété button qui indiquerais quel bouton de la souris à été pressé.

Ma question était, est-ce voulu de ta part d'avoir 2 rectangles dessinés ou as-tu simplement oublier de supprimer ce code que tu aurais pu mettre là en exemple le temps d'écrire correctement ta propre instruction.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
25 juil. 2009 à 14:03
Il me dit
Impossible d'effectuer un cast d'un objet de type 'System.EventArgs' en type 'System.Windows.Forms.MouseEventArgs'.

encore merci a vous 2
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
25 juil. 2009 à 15:55
je ne comprend pas pourquoi Impossible d'effectuer un cast d'un objet de type 'System.EventArgs' en type 'System.Windows.Forms.MouseEventArgs'

alors que je l'utilise un peut plus haut???
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juil. 2009 à 16:17
Parce que les 2 structures ne sont pas compatibles. En quand bien même tu arriverais à faire le cast, la propriété button ne serait de toute façon pas renseignée puisqu'elle n'existe pas dans System.eventArgs.

Visiblement, la listview ne différencie pas les clics et double clics des boutons gauche et droit

Il ne te reste plus qu'a supprimer le test du bouton et dessiner directement ton rectangle.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
25 juil. 2009 à 23:52
Salut,

Manque de précision ton code !

"tabpage2 tu recup les coordonnées et lorsque doubleclick je viens sur
tabpage1 et je creer un point"

Cam_AVT_Click <== Qu'est ce que c'est ?? Un bouton ?

"tabpage2 tu recup les coordonnées et lorsque doubleclick je viens sur
tabpage1 et je creer un point"

Doubleclick sur quoi ? Un bouton ? le picturebox ? Le tabpage ?

Bref si tu tiens à placer ton code dans une procédure click gérant le MouseEventArgs, place le dans 'MouseUp'.

@+ Mayzz.



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
26 juil. 2009 à 08:39
merci as tous ,
j'ai trouvé un autre moyen en chargant la même image le voici :

Dim myBitmap As New Bitmap(namcp.Text) 'Charge maPhoto dans le BitMap
Dim g As Graphics = Graphics.FromImage(myBitmap) 'Crée un Graphics et y associe le BitMap

g.FillRectangle(New SolidBrush(Color.Red), X_Local, Y_Local, 6, 6)

Cam_AVT.Image = myBitmap

Ps:pour info Cam_AVT_Click => picturebox
0
Rejoignez-nous