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

Delphi Discussion :

Image du curseur souris


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Points : 76
    Points
    76
    Par défaut Image du curseur souris
    Bonjour,
    Est-ce que vous savez comment faire pour récuperer l'image du curseur souris (pour le copier dans un TBitmap par exemple) ?
    J'ai bien vu GetCursor() qui retourne un hCursor mais je n'arrive pas à le copier dans un TBitmap...

    De la même facon comment savoir à quelles coordonnées est le Hot Point d'un curseur ?
    même ici -> http://windowssdk.msdn.microsoft.com.../ms674642.aspx j'arrive pas à trouver ce que je cherche

    Bruno.

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 678
    Points : 7 087
    Points
    7 087
    Par défaut
    Citation Envoyé par Bruno@Chrysis
    De la même facon comment savoir à quelles coordonnées est le Hot Point d'un curseur ?
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var 
      iconInfo: TIconInfo; 
    begin 
      if GetIconInfo(AnIcon.Handle, iconInfo) then 
      begin 
        x := iconInfo.xHotspot;
        y := iconInfo.yHotspot;
    ...

  3. #3
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour récupérer le bitmap du curseur, je te propose cette petite procédure de mon crû :
    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
    procedure CursorToBitmap(CursorIndex:TCursor;var ABmp:TBitmap);
    var hCursor:  THandle;
    begin
      ABmp.Width := 32;
      ABmp.Height := 32;
      ABmp.PixelFormat := pf24bit;   // pour éviter de travailler avec les palettes
      hCursor := Screen.Cursors[CursorIndex];
      DrawIconEx(ABmp.Canvas.Handle, 0,0, hCursor, 32,32, 0,0, DI_NORMAL);
     
      // Remplissage du curseur depuis "l'extérieur" de telle façon qu'un curseur blanc
      // apparaisse blanc.  on suppose que le coin supérieur droit sera le point de départ du remplissage
      // On suppose que RGB(250,250,250) sera la couleur de "transparence".
      ABmp.Canvas.Brush.Color := RGB(250,250,250);
      ABmp.Canvas.FloodFill(31,0, clWhite, fsSurface);
     
      // Le coin supérieur gauche de certains curseurs est "bloqué" contre le floodfill
      ABmp.Canvas.FloodFill(0,0, clWhite, fsSurface);
    end;
    Exemple d'utilisation (dans le onclick d'un bouton) :
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      iconInfo: TIconInfo;
      abmp:tbitmap;
    begin
      abmp:=TBitmap.Create;
      try
        //Je récupère mon Bitmap (en premier paramètre, 
        //j'indique quel curseur je souhaite : 
        //crHandPoint, crHourGlass, crArrow, etc...)
        CursorToBitmap(crHandPoint,abmp);
        //Je l'affiche sur ma fiche
        Form1.Canvas.Draw(5,5,abmp);
        //ou le sauvegarde 
        abmp.saveTofile('MonCurseur.bmp');
      finally
        abmp.Free;
      end;
    end;
    Bon dev

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Et pour récupérer les coordonnées du HotSpot et grace à Lung :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function GetHotSpot(CursorIndex:TCursor):TPoint;
    var iconInfo: TIconInfo;
    begin
      if GetIconInfo(Screen.Cursors[CursorIndex], iconInfo) then
      begin
        Result.X:=iconInfo.xHotspot;
        Result.Y:=iconInfo.yHotspot;
      end;
    end;
    N'oublie pas les uses habituels pour que les procédure que je t'ai donné fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uses Windows, Types, Forms,Graphics;
    il y en a peu être d'autres, j'ai pas vérifié

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    merci pour tout, j'ai pas encore essayé mais tout ceci me parait très bien

    Bruno.

    PS: un ajout dans la FAQ serait cool, non ?

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Bruno@Chrysis
    PS: un ajout dans la FAQ serait cool, non ?
    voui, voui

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

Discussions similaires

  1. Changement curseur souris sur image
    Par thuglife dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2015, 13h41
  2. Image du curseur de la souris.
    Par gerald3d dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 06/03/2009, 16h44
  3. [debutant]image cliquable curseur souris
    Par bruno.rotrou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2008, 15h34
  4. Mettre une image au curseur de la souris lors d'un dragndrop
    Par malag dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 10/09/2006, 03h16
  5. changer l'image du curseur
    Par klashnikov dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/04/2005, 11h09

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