DRAWING PICTUREBOX [Résolu]

scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 25 juil. 2009 à 11:12 - Dernière réponse : scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention
- 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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 25 juil. 2009 à 11:30
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

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_casy
Meilleure réponse
phila38 11 Messages postés jeudi 23 juillet 2009Date d'inscription 25 juillet 2009 Dernière intervention - 25 juil. 2009 à 12:49
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.

Merci phila38 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de phila38
scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 25 juil. 2009 à 11:14
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
scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 25 juil. 2009 à 11:36
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 25 juil. 2009 à 12:11
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
scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 25 juil. 2009 à 14:03
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
scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 25 juil. 2009 à 15:55
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 25 juil. 2009 à 16:17
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
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 25 juil. 2009 à 23:52
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
scromania 453 Messages postés dimanche 20 août 2006Date d'inscription 11 janvier 2013 Dernière intervention - 26 juil. 2009 à 08:39
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.