Plusieurs Zone ovale ou losange cliquable dans une image.

Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
- - Dernière réponse : Whismeril
Messages postés
13509
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juillet 2019
- 13 mars 2019 à 06:54
Je voudrais savoir si je peux délimiter plusieurs zone cliquable comme des losanges ou des formes non carré et non rectangle précise dans une image. Exemple: une cible de dard et faire que chaque zone sois cliquable et très précis.
Afficher la suite 

8 réponses

Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
Bonjour
Il faut déjà que tu recup la position du clic sur l'image.
Ce bout de code, te permet de recup dans une textbox la position du clic sur une image nommer 'PictureBallon1'.
Private pointDown As Point
  
    Private Sub Mouse_Down(ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = MouseButtons.Left Then
            'recupere position du click
            pointDown = e.Location
            TextBox1.Text = pointDown.ToString
             End If
    End Sub

    Private Sub PictureBallon1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBallon1.MouseDown
        Mouse_Down(e)
    End Sub


apres du délimite la zone a cliquer ou pas.
glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
Merci pour ta réponse, cependant je commence en vb. Si jeux attribuer une action à chaque zone. exemple: sur un jeux de fléchette si je veux que quand je clique sur toute la zone du triple 20 sa affiche 60 quand je clique sur triple 14 ou la bine au milieux qui à la valeur de double 25 pour la zone rouge et 25 pour la zone verte. Et sur jeux de fléchette ce n'est pas droit. Il des zone à délimiter. Et merci beaucoup de m'aider.
Commenter la réponse de ManuAntibes
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
Salut
peux tu mettre une capture d'écran, pour mieux comprendre.

la cible va t elle bouger ?
comment affiches tu la cibles ?

et oui après tu délimites la ou les zones à cliquer. sauf que la c'est pas gagné .

Car moi je sais délimité une zone avec une adresse en point (style Carré) et toi si tu veux des cercles ... !!!! ???
glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
Et voila
Commenter la réponse de ManuAntibes
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
c'est une image ?
glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
oui c'est écris quoi je recherche à intérieur
glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
La cible ne bougera pas. c'est une imagebox. ex: je clique sur simple 18 et sa affiche dans une textbox.
Commenter la réponse de ManuAntibes
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
Salut
as tu avancé ??

je prends le temps de revenir vers toi. voila ce que je t'ai fais pour comprendre mieux.



pour choisir la position du clic de la flechette, je pense que tu n'as pas le choix que d'imaginer un cadrillage et de recup les clics dans les cadrillages et de compter les points.

voici une partie de code, je ne suis plus très sur de la position des lettres (A, B, C ,D).
mais c'est le principe.
Commenter la réponse de ManuAntibes
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
J'avais fais une appli pour apprendre a cliquer déplacer une image.
avec un petit jeu de basket.
Le principe est de prendre le ballon et de le mettre dans un panier de basket.
si le ballon est bien laché au dessus du panier et t'elle position , ça marque un point.


voici le code:
Imports System.Threading

Public Class Form1

    Private pointDown As Point
    Private isMouseDown As Boolean = False


    Private Sub Mouse_Down(ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = MouseButtons.Left Then
            'recupere position du click
            pointDown = e.Location
            TextBox1.Text = pointDown.ToString
            isMouseDown = True
        End If
    End Sub


    Private Sub Mouse_Move(ByVal e As System.Windows.Forms.MouseEventArgs)
        If isMouseDown Then  'deplacement active oui?
            Dim pointMove As Point = e.Location
            'le deplacement relatif  
            deltaPoint = pointMove - pointDown
            'ajouter à Location actuelle

        End If
    End Sub

    Dim PointPanier As Integer = 0

    Dim deltaPoint As Point

    Private Sub PictureBallon1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBallon1.MouseMove
        Mouse_Move(e)
        Dim _Send As Object = sender
        _Send.Location = _Send.Location + deltaPoint
    End Sub

    Private Sub Mouse_Up(ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = MouseButtons.Left Then
            'desactive  deplacement
            isMouseDown = False
        End If
        deltaPoint = Nothing
    End Sub

    Private Sub PictureBallon1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBallon1.MouseUp
        Mouse_Up(e)
        Dim _Send As Object = sender


        If (_Send.Location.X + 30 > 50 AndAlso _Send.Location.Y + 30 > 0) And (_Send.Location.X + 30 < 100 AndAlso _Send.Location.Y + 30 < 75) Then
            PointPanier += 1
            Label1.Text = "PANIER :" & PointPanier.ToString
        End If

        Dim decenteBallon As New Point
        decenteBallon.X = 0
        decenteBallon.Y = 10
        Do Until _Send.Location.Y >= 200
            _Send.Location = _Send.Location + decenteBallon
            Thread.Sleep(50)
            _Send.Refresh()
        Loop
        decenteBallon.X = _Send.Location.X
        decenteBallon.Y = 200
        _Send.Location = decenteBallon
    End Sub

    Private Sub PictureBallon1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBallon1.MouseDown
        Mouse_Down(e)
    End Sub


End Class
Commenter la réponse de ManuAntibes
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
0
Merci
Merci de m'aider. Je vais essayer de t'expliquer en plus simple ce que je veux faire.
Le but de mon programme est d'afficher des points, quand on joue au fléchette.
ex: si quelqu'un fait 18 et bien il aurai 2 choix soit de entré le pointage comme une calculatrice ou sois cliquer sur la cible sur le simple 18. Mais ce que je n'arrive pas a faire est que pour la cible est de définir exactement l'emplacement du simple 18 avec un carré qui n'est pas droit du tout. Et ainsi de suite pour tout les chiffres de la cible et le centre qui lui est rond. Comme des boutons mais pas droit du tout.

Alors je souhaite que j'ai été assez précis dans mes explication.

et merci encore
Commenter la réponse de glenat_26
Messages postés
25949
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juillet 2019
313
0
Merci
Bonjour,

Personnellement... je prendrai le problème autrement.

Tu sais que ta cible est un cercle.
Que chaque segment et de taille équivalente
Il y a 20 segments... donc chacun d'eux représente 5% de la circonférence
- Le segment du chiffre "20" se situe à l'angle 0 et -2.5% / +2.5% de la circonférence
et donc.. le segment du 18 se situe entre : 2.5 + 5 / 2.5+5+5 )
ou si tu préfère en degrés ... (360 / 20 ) *(7.5) et (360 / 20 ) *( 12.5)

- Les zones de triple se trouvent (de mémoire) à la moitié du rayon
- Les zones de double... à la fin du rayon

Je pense qu'en fonction de l'endroit cliqué sur le cercle (avec un peu de mathématiques....) il doit être assez simple de savoir :
A quel "angle" on se situé et à quelle distance du rayon... et donc de calculer dans quel segment on se trouve

glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
Merci pour ta réponse. Cependant peux-tu me donner un exemple de code pour déterminer une zone à cliquer avec un cercle. svp
jordane45
Messages postés
25949
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juillet 2019
313 > glenat_26
Messages postés
10
Date d'inscription
vendredi 8 février 2019
Statut
Membre
Dernière intervention
12 mars 2019
-
Quand tu cliques sur ton image... tu récupères bien les coordonnées ?
Dans ce cas.. il te suffit d'un peu de maths comme expliqué dans ma réponse précédente...
jordane45
Messages postés
25949
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juillet 2019
313 > jordane45
Messages postés
25949
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juillet 2019
-
Commenter la réponse de jordane45
Messages postés
13509
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juillet 2019
288
0
Merci
Bonjour
Une autre option serait de dessiner ta cible avec des contrôles de toutes les formes, ensuite tu gèrerais l’événement click de ces contrôles.

Par contre, pour faire ça « facilement » il faut te tourner vers WPF.
Commenter la réponse de Whismeril