Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: Pixel in Millimiter umrechnen mit dieser Funktion ?

  Alt 5. Feb 2009, 11:11
Du hast halt bei allen Rechnungen immer mindestens eine Rundung der Werte drin.
Und demnach ergeben sich unterschiedliche Ergebnisse.
also wenn's möglichst genau sein soll, dann entweder SetMapMode, da sind die Ungenauigkeiten über den gesamten "Monitor" verteilt, oder du Rundest nur einmal und das ganz weit zum Schluß der Rechnung.


wenn du nur einen Monitor hast,
oder alle Monitore die gleiche Auflösung haben und gleich groß sind,
bzw. alle Monitore das gleiche Auflösungsverhälnis (DPI) haben:
Delphi-Quellcode:
var h: hDC;
  hres, vres, hsiz, vsiz: Integer;

h := GetDC(GetDesktopWindow);
hres := GetDeviceCaps(H, HORZRES);
vres := GetDeviceCaps(H, VERTRES);
hsiz := GetDeviceCaps(h, HORZSIZE);
vsiz := GetDeviceCaps(h, VERTSIZE);
ReleaseDC(GetDesktopWindow, h);

Balken5cmBreit := hres / hsiz * 50;

wenn es mehrere unterschiedliche Monitore gibt:
Delphi-Quellcode:
var h: hDC;
  hres, vres, hsiz, vsiz: Integer;

i := AufWelchemMonitorLiegtDerBalken;
h := GetDC(Screen.Monitors[i].Handle);
hres := GetDeviceCaps(H, HORZRES);
vres := GetDeviceCaps(H, VERTRES);
hsiz := GetDeviceCaps(h, HORZSIZE);
vsiz := GetDeviceCaps(h, VERTSIZE);
ReleaseDC(Screen.Monitors[i].Handle, h);

Balken5cmBreit := hres / hsiz * 50;
$2B or not $2B
  Mit Zitat antworten Zitat