// Umrechnung von Pixel in Millimeter.


// Getestet mit D4 unter XP

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;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke