Effectuer un ScreenShot en utilisant uniquement l'API Windows

Résolu
cs_nader Messages postés 10 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 19 juillet 2010 - 24 août 2006 à 23:25
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 31 août 2006 à 09:17
J'essaye de réaliser une petite application qui effectue une capture d'ecran en utilsant uniquement l'API  Windows (donc eviter l'utilisation de TBitmap de l'unité Graphics),   la fonction principale
 produit un  " HBitmap" mon problème est Comment Sauver ce "HBitmap" dans un fichier (*.bmp)? Merci d'avance pour vos réponses .

24 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
29 août 2006 à 14:20
En premier je vous dit :

Mais en fait c'était relativement simple à corriger :  
il m'est venu une :
si en chargant l'image dans un TImage, Delphi l'affiche correctement, je me suis dit :
je fait une sauvegade sous un autre nom et j'effectue une comparaison bit par bit des deux fichiers et là comme il n'y avait que deux octets qui différaient et au début du fichier.

La suite est des plus simple :
Comme je sais maintenent ou chercher (dans le Header pour ceux qui n'avait pas compris)
j'ai fait une lecture du Header avec ce bout de code :

    zeromemory(@info,sizeOf(info));
    zeromemory(@fileHeader,sizeOf(fileHeader));
    assignFile(f,'Test0.bmp');
    Reset(f);
    blockRead(f,fileHeader,sizeOf(fileHeader));
    blockRead(f,info.bmiHeader,sizeOf(info.bmiHeader));
    closeFile(f);          

et c'est là que je constate que :
fileHeader.bfOffBits := 40 ;   dans le fichier décalé 
et 54 dans le bon

il y a donc une différence 14 ce qui correspond exactement à SizeOf(TBitmapFileHeader)

Il semblerait également que  biSizeImage : = ImgSize; ne soit pas nécéssaire (ça fonctionne sans) mais comme Delphi l'écrit dans le fichier je le laisse ...

En conclusion :
l'aperçu d'images lit les informations dans le Header et les utilises contrairement à Paint et Delphi qui doivent avoir une constante de déclarer (par ex.) puisque la taille de bfOffBits ne devrait pas changer pour Bitmap (les fameux 54).

Enfin c'est ce que je pense ...

Il ne manque plus que l'avis du principal interressé                  

@+
Cirec
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 août 2006 à 14:32
Eh bin !!!


's'ennuie pas la nuit, notre Cirec.  ;)
Merci pour la méthode:  très instructif.

Mais ce n'était pas si simple que ça, je pense.
Grand modeste, va!   héhéhéhé
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
31 août 2006 à 03:07
Juste 2 mots pour cet éloquent Nader à l'age fluctant qui mendie
toujours une aide :

           A jamais!
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
31 août 2006 à 09:17
Tiens, nader est de retour.


J'espère que tu as bien profité de tes vacances. En tout cas, tu sembles en pleine forme.

Tu aurais dû poser d'autres questions avant de partir. Ainsi, quand tu reviens, tu notes

les solutions, tu déverses au passage un peu de bile sur un ou deux membres du forum,

histoire de te faire plaisir, et tu repars pour de nouvelle aventures (surtout ne pas oublier d'accepter la réponse).
C'est ta manière à toi d'apporter quelque chose à notre communauté, c'est bien...

Et ça te permet de donner des leçons à ceux qui ne postent que des codes simplistes, et

ne répondent sur les forums que pour être désagréables, sans jamais aider les autres (ça
c'est ma manière à moi, et c'est mal).

Bravo pour la mentalité, je vois pas pourquoi tu serais gêné, hein ?

En fait, le débat s'est très bien passé sans toi, comme tu peux le remarquer.


Mais attend, j'arrête, j'ai trop de mal à faire semblant d'être en
colère. En fait, je suis pété de rire. Je n'ai pas commencé à
programmer à la naissance, comme tu sembles le

croire, et il faudra que je pense à enlever les commentaires sur ma fiche, c'était une

plaisanterie (tu ne peux pas savoir ni comprendre, puisque tu ne passes que rarement ici,

et j'ai pas du tout envie de t'expliquer).

Sois rassuré, je n'interviendrai plus sur tes posts !


Pour moi, ce topic est clos.


A jamais, ouais.
0
Rejoignez-nous