var
DC: HDC;
hres, wres, hsiz, wsiz: integer;
w, h: double;
procedure GetCaps;
begin
DC := GetWindowDC(0);
hres := GetDeviceCaps(DC, HORZRES);
wres := GetDeviceCaps(DC, VERTRES);
hsiz := GetDeviceCaps(DC, HORZSIZE);
wsiz := GetDeviceCaps(DC, VERTSIZE);
DeleteDC(DC);
end;
procedure PixelToMM(PixelWaag, PixelSenk: word; var w, h: double);
begin
GetCaps;
w := (hsiz / hres) * PixelWaag;
h := (wsiz / wres) * PixelSenk;
end;
procedure MMToPixel(MMWaag, MMSenk: word; var w, h: double);
begin
GetCaps;
w := (hres / hsiz) * MMWaag;
h := (wres / wsiz) * MMSenk;
end;
// Beispielaufrufe
// Wieviel Millimeter belegt ein einzelnes Pixel auf dem Desktop
// (bei der aktuellen Auflösung)?
procedure TForm1.Button3Click(Sender: TObject);
begin
PixelToMM(1, 1, w, h);
showmessage('Pixelbreite in mm: ' + floattostr(w) + #13 +
'Pixelhöhe in mm: ' + floattostr(h));
end;
// Wieviel Pixel liegen auf 5 x 7 Millimetern
// (bei der aktuellen Auflösung)?
procedure TForm1.Button4Click(Sender: TObject);
begin
MMToPixel(5, 7, w, h);
showmessage('In 5 x 7 mm liegen rund ' + inttostr(round(w * h)) + ' Pixel');
end;