Classe pour les captures d'écran (Winapi, DirectDraw, DirectX)

Signaler
Messages postés
2
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
12 avril 2014
-
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100502-classe-pour-les-captures-d-ecran-winapi-directdraw-directx

Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Salut,
Mais pourquoi passer par un TPicture ?
Quoique... pourquoi pas après tout.
Une autre solution étant de passer le TBitmap en variable dans une procedure.
Quoi qu'il en soit, attention à bien libérer le TPicture puisqu'il est créé dans la fonction.
Messages postés
268
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
2 février 2021

Bonjour,

Quelle usine à gaz pour une simple capture d'écran !!!
Pour ma part je me contente de cette fonction :

function CopierEcran(xe, ye, we, he: integer): tBitMap;
// Renvoie le BitMap d'une capture d'écran en xe,ye large de we et haute de he
// xe,ye = coordonnées-écran (ClientToScreen) de l'angle-supérieur-gauche de la capture
var HandleDC: HDC; Picture: TPicture;
begin
  HandleDC := GetDC(GetDesktopWindow);
  Picture := TPicture.Create;
  try
    Picture.Bitmap.PixelFormat := pf32bit;
    Picture.Bitmap.Width := we;
    Picture.Bitmap.Height := he;
    BitBlt(Picture.Bitmap.Canvas.Handle, 0, 0, we, he,
      HandleDC, xe, ye, SrcCopy); //recopie l'image de la région d'écran dans PictureBureau
  finally
    Result := tBitMap.create;
    Result.Assign(Picture.BitMap);
    ReleaseDC(GetDesktopWindow, HandleDC);
  end;
end; // CopierEcran


A+.
Messages postés
16353
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
22 octobre 2021
568 >
Messages postés
268
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
2 février 2021

Bonjour, je me suis permis d'éditer ton message, pour préciser à la coloration syntaxique qu'il s'agit de delphi. En effet avec la balise de code par défaut, le site choisi ce qu'il veut et le résultat n'est pas toujours au mieux.
Tu peux préciser le langage en cliquant sur la flèche descendante à droite de <>.