Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DPI ermitteln

75 views
Skip to first unread message

Hermann Kraus

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Hallo,

wie kann ich mit Delphi 4 die dpi oder noch besser ppi des Druckers
ermitteln?

Hermann


Karl Jenz

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Hermann Kraus schrieb:

>
> 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

Karl Jenz

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Hermann Kraus schrieb:

>
> 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 ;

Michael Winter

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Hermann Kraus schrieb:

> PPI = Pixel per inch
> Also wie viele Pixel in einen Inch gehen

Ähmm, also, ist das nicht das selbe wie DPI?

-Michael

Christian Zimmermann

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Michael Winter schrieb:

> > 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

Hendrik Friedel

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
> wie kann ich mit Delphi 4 die dpi oder noch besser ppi des Druckers
> ermitteln?

Weiß ich nicht.
Aber ist das (ppi/dpi) nicht das gleiche?

Hendrik


Michael Winter

unread,
Dec 18, 1999, 3:00:00 AM12/18/99
to
[ PPI = DPI ]

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

Christian Zimmermann

unread,
Dec 20, 1999, 3:00:00 AM12/20/99
to
Michael Winter schrieb:

> [ 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

Sven Opitz

unread,
Dec 20, 1999, 3:00:00 AM12/20/99
to
>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

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

Christian Zimmermann

unread,
Dec 21, 1999, 3:00:00 AM12/21/99
to
Sven Opitz schrieb:

> 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

0 new messages