AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi zentimetergenaues Zeichnen auf Monitor unmöglich?

zentimetergenaues Zeichnen auf Monitor unmöglich?

Ein Thema von taaktaak · begonnen am 7. Mai 2008 · letzter Beitrag vom 6. Feb 2009
 
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#1

zentimetergenaues Zeichnen auf Monitor unmöglich?

  Alt 7. Mai 2008, 10:57
Moin, Moin.
Ich möchte auf einem Canvas (Monitor) Linien im exakten Horizontalabstand von 1cm zeichnen. Nix leichter als das - dachte ich. Dafür gibt's ja Funktionen, die dich die Anzahl der Pixel je Zentimeter berechnen lassen. Meine bisherigen Versuche scheitern aber dummerweise kläglich

Delphi-Quellcode:
procedure GetHorPixelsPerCM;
var DC : HDC;
    HorPixCM_v1,
    HorPixCM_v2 : Integer;
begin
  DC:=GetDC(0);

  HorPixCM_v1:=Trunc(GetDeviceCaps(DC,LOGPIXELSX)/2.54);
  ShowMessage('pixel/cm'#13'Variante mit LogPixelsX'#13
              +IntToStr(HorPixCM_v1));

  HorPixCM_v2:=MulDiv(GetDeviceCaps(DC,HorzRes),10,GetDeviceCaps(DC,HorzSize));
  ShowMessage('pixel/cm'#13'Variante mit HorzRes+HorzSize'#13
              +IntToStr(HorPixCM_v2));

  ShowMessage('pixel/cm'#13'Variante mit Screen.PixelsPerInch (nur vertikal gültig)'#13
              +IntToStr(Trunc(Screen.PixelsPerInch/2.54)));

  ReleaseDC(0,DC);
end;
Die beiden ersten Varianten liefern z.B. auf meinem Notebook abweichende Angaben von 37 bzw. 35 Pixel/cm. Die dritte Variante (die lt. Delphihilfe für horizontale Auflösungen nicht verwendet werden sollte) liefert wieder ein Ergebnis von 37 Pixel/cm. Korrekt sind die Werte allerdings in keinem Fall - richtig wären 34 Pixel/cm. Für alle mir zugänglichen PC-Monitore werden ebenfalls falsche Ergebnisse ermittelt. Ursachenforschung ist bei der Variante 1 möglich: Der Wert für HorzSize (also die horizontale Breite in mm) wird in allen untersuchten Fällen falsch zurückgeliefert.

Fragen:
  • Ist meine Herangehensweise falsch?
  • Falls es mal einer der Leser nachprüfen möchte, finden sich Monitorkonfigurationen bei denen das Ergebnis korrekt ermittelt wird?
  • Gibt es eine alternative Lösung? Im Augenblick fällt mir nur eine Konfigurationsmöglichkeit ein, anhand derer der Anwender eine Kalibrierung vornehmen kann und das Programm dann mit einem zusätzlichen Korrekturfaktor arbeitet.
Ralph
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz