japee
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
28 août 2006 à 14:31
Cirec > moi aussi, j'aimerais bien comprendre.
Au cas où le lien que je cite ne pointerait pas sur la même page (bien
qu'on ait XP tous les deux, mais j'utilise plus volontiers Firefox,
lol), je recopie ci-dessous le code que j'ai testé :
procedure screenshot(shot: string);
var
dibH : hBitmap;
bits : pointer;
info : TBITMAPINFO;
width,height : integer;
screenDC,dibDC : hDC;
f : file of byte;
FileHeader : TBITMAPFILEHEADER;
begin
screenDC := getDC(getDeskTopWindow);
dibDC := createCompatibleDC(screenDC);
width := getDeviceCaps(screenDC,HORZRES);
height := getDeviceCaps(screenDC,VERTRES);
info.bmiHeader.biXPelsPerMeter := round(getDeviceCaps(screenDC,LOGPIXELSX)*39.37);
info.bmiHeader.biYPelsPerMeter := round(getDeviceCaps(screenDC,LOGPIXELSY)*39.37);
zeromemory(@info,sizeOf(info));
with info.bmiHeader do
begin
biSize := sizeOf(TBITMAPINFOHEADER);
biWidth := width;
biheight := height;
biplanes := 1;
biBitCount := 24;
biCompression := BI_RGB;
end;
dibH := createDIBSection(dibDC,info,DIB_RGB_COLORS,bits,0,0);
selectObject(dibDC,dibH);
bitblt(
dibDC,
0,0,width,height,
screenDC,
0,0,
SRCCOPY);
releaseDC(getDeskTopWindow,screenDC);
assignFile(f,shot);
reWrite(f);
if width and 3 <> 0 then
width := 4*((width div 4)+1);
with fileHeader do
begin
bfType := ord('B')+(ord('M')shl 8);
bfSize := sizeOf(TBITMAPFILEHEADER)+sizeOf(TBITMAPINFOHEADER)+width*height*3;
bfOffBits := sizeOf(TBITMAPINFOHEADER);
end;
blockWrite(f,fileHeader,sizeOf(TBITMAPFILEHEADER));
blockWrite(f,info.bmiHeader,sizeOf(TBITMAPINFOHEADER));
blockWrite(f,bits^,width*height*3);
closeFile(f);
deleteObject(dibH);
deleteDC(dibDC);
end;
je l'appelle ainsi :
procedure TForm1.Button1Click(Sender: TObject);
begin
screenshot('essai.jpg');
end;
et quand j'ouvre 'essai.jpg', j'obtiens le résultat que je cite précédemment.
Afin quantifier le résultat obtenu (valeurs R,G,B), j'ai testé avec un petit prog' à moi qui définit et récupère les couleurs.
Faudra-t-il en arriver à comparer la marque de nos cartes graphique ?
A+