Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Drucken mit Delphi, Font.Size zu Pixel (https://www.delphipraxis.net/194008-drucken-mit-delphi-font-size-zu-pixel.html)

A.Griffin 5. Okt 2017 12:16

Drucken mit Delphi, Font.Size zu Pixel
 
Hallo zusammen,

ich arbeite mich gerade in das Drucken mit Delphi ein und habe jetzt zu Testzwecken das gemacht:

Code:
procedure TForm1.btn2Click(Sender: TObject);
var
  printDialog : TPrintDialog;
  myPrinter  : TPrinter;
  size1, size2: TSize;

begin
  // Create a printer selection dialog
  printDialog := TPrintDialog.Create(Form1);

  // If the user has selected a printer (or default), then print!
  if printDialog.Execute then
  begin
    // Use the Printer function to get access to the
    // global TPrinter object.
    // All references below are to the TPrinter object
    myPrinter := printer;
    with myPrinter do
    begin
      // Start printing
      BeginDoc;

      // Set up a large blue font
      Canvas.Font.Size  := 20;
      Canvas.Font.Color := clBlue;

      // Write out the page size
      size1 := Canvas.TextExtent('Page width = '+IntToStr(PageWidth));
      size2 := Canvas.TextExtent('Page height = '+IntToStr(PageHeight));
      Canvas.TextOut(20, 20, 'size1 is x:' + IntToStr(size1.cx) + 'and y:' + IntToStr(size1.cy));
      Canvas.TextOut(20, 190, 'size2 is x:' + IntToStr(size2.cx) + 'and y:' + IntToStr(size2.cy));
      Canvas.TextOut(20, 380, 'Page width = '+IntToStr(PageWidth));
      Canvas.TextOut(20, 570, 'Page height = '+IntToStr(PageHeight));

      // Finish printing
      EndDoc;
    end;
  end;
end;
Ich bekomme da bei mir mit einer Druckereinstellung von 600dpi (Textlänge weggelasssen):
Texthöhe: 187 pixel
Seitenbreite: 4676 pixel
Seitenhöhe: 6814 pixel

Ich nehme mal an, dass Seitenhöhe und -breite nur der beschreibbare Bereich ist. Wären dann:
Seitenbreite: 7,79"
Seitenhöhe: 11,36"

Vom Drucker für A4 angegeben sind 8.3" x 11.7". Stimmt das so?

Jetzt meine Frage. Wie ergibt sich die Texthöhe bei 600dpi, Font.Size := 20 in Pixel?

*edit*

Jetzt habe ich gelesen, dass es ppi und dpi gibt und ich bin durcheinander. Drucker haben dpi und Monitore haben ppi. In was ist dann meine Seitenhöhe, -breite und Texthöhe angegeben?

Redeemer 5. Okt 2017 17:47

AW: Drucken mit Delphi, Font.Size zu Pixel
 
Texthöhe hängt von der Schriftart ab.

Delphis
Delphi-Quellcode:
TFont.Height
ist lediglich die Schriftgröße in CSS-Pixeln, dies ist definiert als
Delphi-Quellcode:
-TFont.Size * 4 / 3
, wobei
Delphi-Quellcode:
TFont.Size
in CSS-Punkten angegeben ist.

Fritzew 5. Okt 2017 20:48

AW: Drucken mit Delphi, Font.Size zu Pixel
 
Na ja, CSS war erst später...
http://bonfx.com/why-is-the-web-72-d...print-300-dpi/
Ist denke ich eine gute Erklärung

Zitat:

Zitat von Redeemer (Beitrag 1382712)
Texthöhe hängt von der Schriftart ab.

Delphis
Delphi-Quellcode:
TFont.Height
ist lediglich die Schriftgröße in CSS-Pixeln, dies ist definiert als
Delphi-Quellcode:
-TFont.Size * 4 / 3
, wobei
Delphi-Quellcode:
TFont.Size
in CSS-Punkten angegeben ist.


Redeemer 5. Okt 2017 20:53

AW: Drucken mit Delphi, Font.Size zu Pixel
 
Klar war das erst später. Aber die Einheiten CSS-Punkte und CSS-Pixel sind eindeutig definiert und vielen bekannt.

p80286 10. Nov 2017 07:43

AW: Drucken mit Delphi, Font.Size zu Pixel
 
Die sog. Didot-Punkte geben an wie groß ein Buchstabe ist (12-Punkt Schrift).
DPI oder PPI sagt Dir wie viele Druck/Leucht-Punkte auf einem Zoll zu Verfügung stehen. (Auflösung)

Beide Größen haben zunächst nichts miteinander zu tun.

Gruß
K-H

bernau 10. Nov 2017 09:35

AW: Drucken mit Delphi, Font.Size zu Pixel
 
Zitat:

Zitat von A.Griffin (Beitrag 1382681)
Jetzt meine Frage. Wie ergibt sich die Texthöhe bei 600dpi, Font.Size := 20 in Pixel?

*edit*

Jetzt habe ich gelesen, dass es ppi und dpi gibt und ich bin durcheinander. Drucker haben dpi und Monitore haben ppi. In was ist dann meine Seitenhöhe, -breite und Texthöhe angegeben?

dpi (dots per inch) und ppi (points per inch) sind prinzipiell das gleiche.

Die Schriftgröße in Pixel des aktuellen canvas bekommst du mit canvas.textheight.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz