IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Zone réactive dans une image


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 17
    Points : 26
    Points
    26
    Par défaut Zone réactive dans une image
    Bonjour,
    comment définir une zone réactive (de forme quelconque) dans une image

    Merci pour votre aide

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Il y avait un article à ce sujet dans le Msdn magazine il y a quelques années, par Paul Dilescia. Il y a sans doute d'autres solutions mais celle-ci à l'avantage de la simplicité:
    Il te faut un offscreen bitmap qui contient un masque avec une couleur différente pour chaque zone clickable. Le masque a les mêmes dimensions que l'autre bitmap.
    Il te suffit sur le click de l'image de regarder à quelle couleur du offscreen bitmap corresponds le click (coordonnées bitmap=coordonnées du click).
    Et voilà, comme disent les ricains

    A ce titre j'aimerais qu'on m'explique pourquoi dans la VCL le OnClick ne comporte pas les coordonnées de la souris, ce qui dans un cas comme celui-ci serait si pratique.

    yarp
    www.senosoft.com

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    J'aurais 'proposé' de définir la région avec CreateRectRgn(...) (la zone définie peut ainsi être récupérée dans un objet de type RECT) ou une fonction similaire, et de tester avant le Click() - dans l'évènement OnMouseDown() - la position de la souris par rapport au coordonnées de la région.

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    (re)Bonjour,

    Un petit test, en espérant que cela corresponde a ce que tu cherchais :
    .dans le .h de la TForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private:	// Déclarations de l'utilisateur
    TRect rect;
    .dans le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
    TRect imrect = Image1->Canvas->ClipRect;
    rect.left = imrect.left + 15;
    rect.top = imrect.top + 15;
    rect.bottom = imrect.bottom - 15;
    rect.right = imrect.right - 15;
    }
    //puis
    void __fastcall TForm2::Image1MouseDown(TObject *Sender, TMouseButton Button,
    	  TShiftState Shift, int X, int Y)
    {
    TPoint ppoint;
    ppoint.x = X;
    ppoint.y = Y;
    if ( PtInRect(&rect, ppoint)!= 0 )
    {
    	ShowMessage("Arrêtes, tu me chatouille !");
    }
    }
    En espérant t'aider,
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML 4.0] problème zones réactives dans une image d'un tableau avec une feuille css
    Par scoubi77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/02/2011, 17h33
  2. Zone cliquable dans une image
    Par rad_hass dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/11/2010, 12h00
  3. Recherche d'une zone uniforme dans une image
    Par mm2405 dans le forum Traitement d'images
    Réponses: 14
    Dernier message: 26/04/2007, 14h23
  4. [D6] Algo de détection de zones dans une image
    Par DMO dans le forum Langage
    Réponses: 4
    Dernier message: 25/11/2005, 15h15
  5. Zone de texte dans une image
    Par sanna dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 18/03/2005, 22h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo