Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Pixel in Millimiter umrechnen mit dieser Funktion ?

  Alt 5. Feb 2009, 10: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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat