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 :

comment faire pour qu'un curseur devienne un parfait viseur?


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut comment faire pour qu'un curseur devienne un parfait viseur?
    Bonjour,
    Je debute en C++, je voudrais creer un viseur, avec un cercle et son centre, qui peuvent passer au dessus d'autres images tout en étant transparent, et que le click de la sourie puisse toujours etre pris en compte. J'ai eu beau tenter de grapiller a droite a gauche, je n'arrive toujours pas a realiser ce que je veux. O Desespoir
    C'est assez exigeant, certes, mais au moins je sais ce que je veux.
    Aidez moi! Pleaaase.
    Merci
    PS: Je tiens a souligner que ce n'est pas pour un jeu, mais pour trouver le centre de cercles dont le diametre est connu... Car c fastidieux de le trouver a l'aveuglette.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Je n'ai pas tout compris ta demande. Si on charge une image préfabriquée (avec transparent) comme image de curseur, est-ce que cela peut avancer ton projet?

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut romu37fr:
    Dans l'aide Windows SDK voir "CursorCreation", "LoadCursor"

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Avant tout, merci pour vos reponses.
    Le probleme est que justement je ne comprend rien aux explciations données avec l'aide. Je débute, et leurs consignes ne sont pas toujours évidentes.
    J'aimerai bien chargé une image, comme le suggere Xavier. Mais je ne sais pas comment convertir le curseur en cette image. Et imaginons que je charge un gif, pour avoir la transparence ou je veux, je ne sais pas comment faire en sorte que la transparence soit prise en compte...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Déclarer en global ou bien en tant que propriété de la form :

    Tu peux utiliser un TShape dont il faudra fixer certaines propriétés comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Shape1->Pen->Mode = pmNot;
    Shape1->Brush->Style = bsClear; //cercle non rempli
    Shape1->Shape = stCircle;
    Shape1->Cursor = crCross; //pour symboliser le centre du cercle
    Shape1->Tag = 30; //comme rayon du cercle
    On suppose pour Shape1 les trois événementielles de la souris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    int r = Shape1->Tag;
    int d = r * 2;
    Pos = Point(r,r);
    Shape1->OnMouseMove = Shape1MouseMove;
    Shape1->SetBounds(Shape1->Left - (r - X),
                      Shape1->Top - (r - Y),
                      d,
                      d);
    Shape1->BringToFront();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    Shape1->SetBounds(Shape1->Left - Pos.x + X,
                      Shape1->Top - Pos.y + Y,
                      Shape1->Width,
                      Shape1->Height);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    Shape1->OnMouseMove = NULL;
    }
    Dans le constructeur de la form on rajoute cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Shape1->OnMouseMove = NULL;
    Lorsque l'on clique sur le shape, ce dernier ce recentre sur les coordonnées de la souris et reste centré pendant tout le mouvement.

    Je ne suis pas certain que ce soit la solution attentdue donc... à suivre !

    A plus !

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Encore une fois avant tout, merci ^.^
    Mais... Il y a toujours un mais. Mais soit je suis vraiment nulle, soit je ne sais pas. Mais j'avais deja vu un code de ce type pour un viseur pour images de telescope je crois. Et j'avais rencontré les mêmes problemes:
    -Le cercle fuit le curseur et ne le suit pas (c frustrant)
    -Il en va de soit, le curseur n'est pas au centre du cercle...
    Je commence a croire que je ne suis pas faite pour la programmation

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/06/2015, 06h47
  2. Réponses: 0
    Dernier message: 30/05/2015, 02h05
  3. Réponses: 2
    Dernier message: 10/06/2010, 10h10
  4. Comment faire pour que mon image devienne un lien
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 38
    Dernier message: 25/06/2007, 20h49
  5. Réponses: 6
    Dernier message: 25/08/2006, 15h16

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