wie kann ich mit Delphi 4 die dpi oder noch besser ppi des Druckers
ermitteln?
Hermann
>
> wie kann ich mit Delphi 4 die dpi oder noch besser ppi des Druckers
> ermitteln?
>
var dc : THandle ;
begin
dc := printer.handle ;
dpi_Horizontal := GetDeviceCaps ( dc, logpixelsx ) ;
dpi_Vertikal := GetDeviceCaps ( dc, logpixelsy ) ;
// weitere Abfragen mit GetDeviceCaps möglich siehe OH
Für ppi weiß ich keine Abfragemöglichkeit, weil ich ehrlich
gesagt gar nicht weiß, was mit ppi gemeint ist.
--
Mfg Karl Jenz
http://members.aol.com/karljenz/welcome.html
>
> PPI = Pixel per inch
> Also wie viele Pixel in einen Inch gehen
Dazu habe ich ein kleines Beispiel gefunden (nicht getestet):
var FSize : integer ;
FSize := Printer.Canvas.Font.Size ;
Printer.Canvas.Font.PixelsPerInch :=
GetDeviceCaps ( Printer.Handle, logpixelsy ) ;
Printer.Canvas.Font.Size := FSize ;
> PPI = Pixel per inch
> Also wie viele Pixel in einen Inch gehen
Ähmm, also, ist das nicht das selbe wie DPI?
-Michael
> > PPI = Pixel per inch
> > Also wie viele Pixel in einen Inch gehen
>
> Ähmm, also, ist das nicht das selbe wie DPI?
"Nein, ich glaube nicht Tim ..."
PPI sind Einheiten auf dem Schirm, die man braucht um einen "logischen"
Zoll darzustellen. In VB hat man da TWIPS (567 pro Zentimeter, also 1440
pro Zoll)
Gruß
Christian
Weiß ich nicht.
Aber ist das (ppi/dpi) nicht das gleiche?
Hendrik
Christian Zimmermann schrieb:
> "Nein, ich glaube nicht Tim ..."
>
> PPI sind Einheiten auf dem Schirm, die man braucht um einen "logischen"
> Zoll darzustellen. In VB hat man da TWIPS (567 pro Zentimeter, also 1440
> pro Zoll)
Was bitte ist ein Dot auf einem Bildschirm oder Drucker anderes als ein
Pixel? Auch Microsoft verwendet beide Begriffe parallel (Zitate aus der
Win32-OH):
(1) The best displays attached to microcomputers are approximately 120
dots-per-inch (dpi), while the typical laser printer is 300 dpi.
(2) Specifies number of device units (pixels) per inch. Typical values
might be 300 for a laser printer or 96 for a VGA screen.
Da ich von VB keine Ahnung habe, kann ich zu TWIPS nichts sagen. Es
scheint mir eher eine virtuelle Umrechnungseinheit zu sein, um
gebrochene Zahlen zu vermeiden. In Delphi gibt es sowas IMHO nicht.
-Michael
> [ PPI = DPI ]
>
Ja, ein Punkt ist ein Punkt.
> Was bitte ist ein Dot auf einem Bildschirm oder Drucker anderes als ein
> Pixel? Auch Microsoft verwendet beide Begriffe parallel (Zitate aus der
> Win32-OH):
Nichts, aber man weiß gleich wovon man spricht
> Da ich von VB keine Ahnung habe, kann ich zu TWIPS nichts sagen. Es
> scheint mir eher eine virtuelle Umrechnungseinheit zu sein, um
> gebrochene Zahlen zu vermeiden.
Nicht nur das, sondern um die Überführung einer Bildschirmausgabe auf Drucker
zu erleichtern. Die Breite eines Objekts auf dem Schirm (1Zoll =96 Pixel)
entspricht nicht unbedingt der Breite auf dem Drucker (1 Zoll=300,600,1200,...
dots), deshalb TWIPS (567TWIPS=1cm auf Bildschirm wie auch auf Drucker). D. h.
das ist eine Erleichterung für den Entwickler, er muß sich um die Umrechnung
nicht kümmern, wenn er generell die Einheit TWIPS verwendet (Möglicherweise
hat VB deshalb ab und zu mal Probleme bei der Druckerausgabe ;-)). In Delphi
muß man bei der Druckausgabe umrechnen.
Gruß
Christian
96 Pixel pro Zoll? Das gilt doch aber nicht für alle Auflösungen,
oder? Und wie verhält sich das zum Beispiel 640*480 Pixel auf einem
14"-Monitor, im Vergleich zu derselben Auflösung auf einem 20"
-Monitor?
Sven
--
Alles was zu beachten ist:
http://pics.webset.de/download/misc/dcld.txt
Simon's FAQ: http://pics.webset.de/faq.htm
dcld*-FAQ: http://delphi.advis.de/index.html
> 96 Pixel pro Zoll? Das gilt doch aber nicht für alle Auflösungen,
> oder? Und wie verhält sich das zum Beispiel 640*480 Pixel auf einem
> 14"-Monitor, im Vergleich zu derselben Auflösung auf einem 20"
> -Monitor?
Nicht nur das. Was ist, wenn der User das Bild seines Analog-Monitors
staucht oder dehnt? Das wird ja noch komplizierter? DDC-Infos auslesen,
oder was?
Siehe Posting von Michael:
...
(2) ... Typical values might be 300 for a laser printer or 96 for a VGA
screen.
Typical ... might be <> must be!!!
Das kann man einerseits angeben, indem man die Größe der
Systemschriftart ändert. Eine andere Möglichkeit wird wohl eine
API-Funktion bieten.
Nicht umsonst hat irgendwer geschrieben, daß manche mit dem Lineal auf
dem Schirm einen Zentimeter ausmessen. Das gilt dann aber immer nur für
eine 100%-Ansicht oder von mir aus für eine benutzerdefinierte Ansicht.
Das brauchen doch nur Spezialisten.
Einem normalen Anwender ist es doch egal, ob eine Linie auf dem
Bildschirm wirklich ein Zentimeter lang ist, Hauptsache auf dem Blatt
Papier ist sie 1 cm lang. Auf dem Schirm interessieren meist
Proportionen.
Gruß
Christian