Plusieurs Zone ovale ou losange cliquable dans une image.

glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019 - 5 mars 2019 à 05:14
Whismeril Messages postés 18414 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 - 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.

8 réponses

ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
Modifié le 5 mars 2019 à 07:58
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.
0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
5 mars 2019 à 12:55
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.
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
5 mars 2019 à 21:16
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 ... !!!! ???
0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
5 mars 2019 à 21:50
Et voila
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
5 mars 2019 à 22:16
c'est une image ?
0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
5 mars 2019 à 23:06
oui c'est écris quoi je recherche à intérieur
0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
5 mars 2019 à 23:10
La cible ne bougera pas. c'est une imagebox. ex: je clique sur simple 18 et sa affiche dans une textbox.
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
7 mars 2019 à 08:22
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.
0

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

Posez votre question
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
7 mars 2019 à 08:27
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
0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
9 mars 2019 à 17:28
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
0
jordane45 Messages postés 37539 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 341
9 mars 2019 à 19:18
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

0
glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 22:40
Merci pour ta réponse. Cependant peux-tu me donner un exemple de code pour déterminer une zone à cliquer avec un cercle. svp
0
jordane45 Messages postés 37539 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 341 > glenat_26 Messages postés 10 Date d'inscription vendredi 8 février 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 23:17
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...
0
jordane45 Messages postés 37539 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023 341 > jordane45 Messages postés 37539 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 juin 2023
12 mars 2019 à 23:45
0
Whismeril Messages postés 18414 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 juin 2023 624
13 mars 2019 à 06:54
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.
0