DRAWING PICTUREBOX [Résolu]

Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
- - Dernière réponse : scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 90 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
11
Date d'inscription
jeudi 23 juillet 2009
Dernière intervention
25 juillet 2009
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 90 internautes nous ont dit merci ce mois-ci

Commenter la réponse de phila38
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
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
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
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
Commenter la réponse de scromania
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
0
Merci
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
Commenter la réponse de cs_casy
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
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
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
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???
Commenter la réponse de scromania
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
38
0
Merci
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
Commenter la réponse de cs_casy
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
17
0
Merci
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.
Commenter la réponse de Mayzz
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
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
Commenter la réponse de scromania

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.