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

Composants VCL Delphi Discussion :

Dessiner au premier plan


Sujet :

Composants VCL Delphi

  1. #1
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut Dessiner au premier plan
    Bonjour tlm,
    j'ai besoin que les maitres du delphi m'aide sur ce coup là.

    Je souhaiterais dessiner un cercle au premier plan de mon appli, je ne sais pas trop comment expliquer ce que je souhaite faire, alors faites l'experience :
    Dans windows, panneau de config, souris ==> onglet option du pointeur, cocher "afficher l'emplacement du pointeur lorsque j'appuie sur la touche CTRL" , appliqué, et appuyer sur CTRL, ca dessine un cercle au premier plan, voila ce que je cherche a reproduire.
    Une petite idée ?

    Merci
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    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 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Une piste (vite fait):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
       ACanvas: TCanvas;
    begin
       ACanvas := TCanvas.Create;
       try
          ACanvas.Handle := GetDC(0);
          ACanvas.Brush.Style := bsClear;
          ACanvas.Pen.Color := clBlue;
          ACanvas.Pen.Width := 5;
          ACanvas.Ellipse(100, 100, 200, 200);
       finally
          ACanvas.Free;
       end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Merci Lung,

    j'ai fait ca (vite fait aussi), ca fonctionne mais on peut peut etre optimiser.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    procedure TFPrinc.alertecircle(pos:TPoint);
    var ACanvas: TCanvas;
        hd : HDC;
        i,a,b,c,d:integer;
        bm:TBitmap;
    begin
     hd := getdc(0);
     ACanvas := TCanvas.Create;
     bm:=TBitmap.Create;
     bm.Width:=25*4*2+25;
     bm.Height:=bm.Width;
     ACanvas.Handle := GetDC(0);
     ACanvas.Brush.Style := bsClear;
     ACanvas.Pen.Color := clRed;
     ACanvas.Pen.Width := 5;
     for i := 4 downto 1 do
     begin
      a:=pos.X-(25*i);
      b:=pos.Y-(25*i);
      c:=pos.X+(25*i);
      d:=pos.Y+(25*i);
      bm.Canvas.FillRect(classes.Rect(0,0,200,200));
      BitBlt(bm.Canvas.Handle,0,0,c-a+10,d-b+10,hD,a-5,b-5,SRCCOPY);
      ACanvas.Ellipse(a,b,c,d);
      sleep(50);
      BitBlt(ACanvas.Handle,a-5,b-5,c-a+10,d-b+10,bm.Canvas.Handle,0,0,SRCCOPY);
     end;
     ACanvas.Free;
     bm.Free;
     ReleaseDc(0, hd);
    end;
    grossomodo, je fait une capture de l'ecran avant de dessiner le cercle, je dessine le cercle et je restore la capture, il y a peu etre une meilleure technique.
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

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

Discussions similaires

  1. Dessiner au premier plan
    Par Neewd dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 25/10/2013, 15h19
  2. [PPT-2003] Affichage en premier plan les elements de la barre de dessin
    Par Alexandra 01 dans le forum VBA PowerPoint
    Réponses: 14
    Dernier message: 20/07/2010, 19h37
  3. dessiner au premier plan
    Par Invité dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/07/2006, 22h30
  4. [Visual C# 2005 Express]Dessin au premier plan
    Par oiffrig dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/11/2005, 18h35
  5. forcer une fenetre à etre au premier plan jusqu'a ...
    Par peppena dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/12/2003, 16h14

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