![]() |
zentimetergenaues Zeichnen auf Monitor unmöglich?
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 :x
Delphi-Quellcode:
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.
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; Fragen:
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Zitat:
Also wenn's 100% stimmen soll, dann muss der Benutzer die Breite und Höhe seines Monitor in Millimeter eingeben. Die Auflösung kann du ja abfragen (Screen.Width, Screen.Height) und damit die Pixel/mm als Fliesskommazahl errechnen. |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Bei mir war die Ausgabe
37 34 37 Ich habs nachgemessen und 34 stimmt folglich sind die 37 Werte Falsch ;) getestet an einer GForce 8800GTS mit DualMonitorsystem ( Jeweils 19", 1280 x 1024 ) Ich mach das übrigens immer so das das ich mir vom User die Abmase ( meist da ich das ja nur beim Drucken brauche sind die schon bekannt ) geben lasse und rechne das dan mittels dreisatz von hand aus. Solltest du das wirklich für Monitorausgabe benötigen ist das natürlich nicht mehr so praktisch .. Vorallem da du ja die Auflösung beliebig ändern kannst. |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Es gibt nur beim Monitor nur die Variante den Benutzer die Breite eingeben zu lassen. Alles andere ist ungenau. Denn wenn jemand einen Röhrenmonitor hat kann er das Bild breiter, schmaler, höher etc. machen. Und diese Werte kannst du nunmal nicht auslesen.
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Kann auch den MapeMode mit
![]() |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
was aber auch keine große Genautigkeit hat da dies nicht berücksichtigt wie man das Bild per Monitor gezerrt hat.
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Das geht nur, wenn die Bildschirmauflösung und die physikalische Höhe/Breite eines Pixels bereits vorher bekannt sind. Wobei ein "programmiertes Pixel" nichts mit der physischen Darstellung des Pixels auf dem Monitor zu tun hat.
Stell mal bei einem 17"-Monitor 640x480 ein. Dann kannst Du wieder von vorne anfangen ;-( |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Liste der Anhänge anzeigen (Anzahl: 1)
Zunächst einmal Danke für die Hinweise und Anregungen!
Um das Thema für mich und andere die das vielleicht noch einmal lesen abzuschließen, hier eine kleine Zusammenzufassung:
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Liste der Anhänge anzeigen (Anzahl: 1)
Was meinst Du mit "Die Balken haben immer 5 cm Breite" ?
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Ich denke mal das die Balken immer exakt 5cm breit seien sollten.
Laut der eingesetzten Funktionen jedenfals... |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Lustig, hatte gerade auf diesen Thread verwiesen!
Ja, also, die roten Balken sollen immer exakt 5 cm lang/breit sein, die Darstellungslänge ist also auf dem Bildschirm mit einem Maßstab zu überprüfen |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir sind die Balken zwischen 5,8 bis 6.1 !!!
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Was ist'n das für ein Monitor?
Bei TFTs sind die Pixel ja noch relativ gleichmäßig verteilt. Bei 'nem Röhrenmonitor, Beamer und o. kann das Bild in sich verzerrt sein ... also an der einen Stelle sind 5 Pixel pro Millimeter und an 'ner anderen Stelle vielleicht 8. |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Zitat:
Wenn ich eine neue Blatt mit Photoshop in mm erstellen möchte, fragt mich Photoshop nicht über meinen Monitor :mrgreen: Beim Ausdrucken bekomme ich genau was ich eingegeben habe. Oder ist das nur auf Bildschirm ? Ich werde das ausdrucken und schaue ich was rauskommt :gruebel: |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Ja, dies ist primär eine Monitor-Problematik
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Zitat:
|
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Wikipedia hilft
Code:
[
...Seitenverhältnis (englisch pixel aspect ratio) eines Pixels auf dem Bildschirm muss nicht zwingend 1 sein. Das bedeutet, dass die Darstellung eines Pixels nicht immer quadratisch ist. Die Pixelgröße sowie der Pixelabstand im Verhältnis zur Bildauflösung haben...
![]() |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Zitat:
das ist eine Problematik aller Ausgabegeräte, besonders auch Plotter und Drucker. Einen präzisen Ausdruck brauche ich viel öfter als eine entsprechende Monitor-Darstellung, z.B. wenn ich ein Schild drucken und nach dem Umriss genau zuschneiden will. Die Angaben, die Windows liefert, sind nur ein grober Anhaltspunkt mit +- 10% Fehler. Wer genauer arbeiten will, muss selbst kalibrieren, und zwar für jedes Gerät getrennt. Das Verfahren ist immer gleich: so was wie ein Lineal drucken und vermessen und danach einen Ausgabefaktor bestimmen. Manche Treiber und manche Druckfunktionen verfügen über eine Skalierung, aber die ist oft zu grob, bei A3 ist 1% Abweichung schon 4 mm, man müsste also 0.01% eingeben können, was meistens nicht vorgesehen ist. Präzisionsgeräte wie Laserplotter (Elektronik, Zeitschriften) arbeiten mit Genauigkeiten von 5 µ auf 1 m, also 0.0005%. In die eigene Software einen (genaugenommen 2) Skalierfaktor einzubauen, ist kein Problem, wie in diesem Thread. Problematisch wird es, wenn man eine CAD-Software benutzt und keine vorgesehen ist. Die Abweichungen bei Druckern liegen generell im mm-Bereich. Gruss Reinhard |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Hallo,
Zitat:
Fazit: Das Problem ist höchstwahrscheinlich nur mit Metermaß und entsprechenden Korrekturfaktoren im Programm lösbar. Denke bitte auch an die DPI Einstellung, die man relativ grösszügig verändern kann. Grüsse Rainer |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Beim Ausdrucken habe ich tatsächlich genau 5 cm erhalten
Also alles in Ordnung : ) d.h. was man aus den Bildschirm messt, entsprecht nicht der Maße |
Re: zentimetergenaues Zeichnen auf Monitor unmöglich?
Zitat:
"WAAAAAAS? Ein 10km breiter und 1km hoher Flachbildschirm?" Ich glaube das Zauberwort heisst da Zoom ... da werden aus 5cm auch schnell 10km oder sogar 1mm und trotzdem druckt der Drucker 5cm, welch Wunder der modernen Technik. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 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-2025 by Thomas Breitkreuz