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 :

Capture écran comme le fait 'Print Screen'


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut Capture écran comme le fait 'Print Screen'
    Je cherche à pouvoir sauver la totalité de l'affichage de l'écran et en faire une image Bmp.
    Ceci est un peut l'équivalent de la touche 'Print-Screen' qui met dans le presse papier l'image qui peut alors être reprise dans word , photoshop, ...

    Quelqu'un aurait-il une idée de marche à suivre sous borland C++ 6.0 avec un OS window XP sp 2 & 3?

    merci!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    salut, réponse dans la faq


    Il faut récupérer le DC (Device Context) de l'écran grâce à la fonction GetWindowsDC. Cette fonction prend pour argument le Handle de la fenêtre dont on veut le DC. Ici, nous souhaitons celui de tout l'écran. Le Handle de l'écran (Bureau) est 0.
    D'où le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HDC ScreenSrc = GetWindowDC(0);
    La méthode BitBlt va copier le contenu de ce DC vers le Canvas de notre composant TBitmap (DC de notre image) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BitBlt(bitmap->Canvas->Handle, // Destination
          0, // Coin haut-gauche : abscisse
          0, // Coin haut-gauche : ordonnée
          Screen->Width, // Largeur de la zone destination
          Screen->Height, // Hauteur de la zone destination
          ScreenSrc, // Source
          0, // Haut-gauche de la source : abscisse
          0, // Haut-gauche de la source : ordonnée
          SRCCOPY);       // Méthode de copie
    Enfin, pour libérer le DC de l'écran (bureau), utilisez la méthode ReleaseDC :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ReleaseDC(GetDesktopWindow(), ScreenSrc);
    Si vous souhaitez directement enregistrer votre capture d'écran, voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
    Bitmap->Height = Screen->Height;
    Bitmap->Width = Screen->Width;
    HDC ScreenSrc = GetWindowDC(0);
    BitBlt(Bitmap->Canvas->Handle, 0, 0, Screen->Width,
           Screen->Height, ScreenSrc, 0, 0, SRCCOPY);
    Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"Bitmap.bmp");
    ReleaseDC(GetDesktopWindow(), ScreenSrc);
    delete Bitmap;
    On crée ici directement un Bitmap et on lui affecte la copie d'écran, puis on utilise la méthode SaveToFile du Bitmap pour sauvegarder l'image dans le répertoire courant.
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    !!! M E R C I !!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2006, 18h05
  2. Touche « Print Screen »
    Par Furius dans le forum Windows
    Réponses: 4
    Dernier message: 20/09/2005, 17h54
  3. Capture écran dans le menu contextuel
    Par Furius dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 02/09/2005, 19h35
  4. [Print]print screen
    Par sonialem2000 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 07/11/2004, 22h03
  5. [C#] Capture écran dans pictureBox
    Par Gauden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2004, 10h18

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