Verständnisfrage zu Canvas

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Verständnisfrage zu Canvas

Beitrag von AlterMann »

Hallo

Ist der Canvas von Printer anders (zu behandeln) als Beispielsweise von TBitMap?

Verhalten sich die verschieden?

Warum die Frage:

Wenn ich Text auf den Printer.Canvas schreibe ist er scharf wie Chili.

Schreibe ich ihn auf BitMaP Canvas und kopiere ihn von dort auf Printer.Canvas wird er (trotz gleicher Größe der Canvas) pixelig am Ausdruck.

Oder:
Canvas.TextRect liefert am Drucker ein Seitenbreitefüllendes Ergebnis.
exact der gleiche Absatz ist auf der BitMap wunzig klein.

Kann mir das jemand erklären (oder sagen wo ich eine Erklärung finden kann)

Danke
Christian
Früher war alles besser. Und aus Holz!

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verständnisfrage zu Canvas

Beitrag von m.fuchs »

Ein Drucker hat eine andere Auflösung als ein Monitor. Häufig eine deutlich höhere. Dann passt das alles nicht.

Näheres dazu hier: http://wiki.freepascal.org/Using_the_pr ... .B6.C3.9Fe
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Verständnisfrage zu Canvas

Beitrag von AlterMann »

m.fuchs hat geschrieben:Ein Drucker hat eine andere Auflösung als ein Monitor. Häufig eine deutlich höhere. Dann passt das alles nicht.


Das versteh' ich schon, aber ich dachte damit sollte das doch nicht zum tragen kommen, oder?

Code: Alles auswählen

 
...
  xmax := Printer.Pagewidth;
  ymax := Printer.Pageheight;
  for a := 1 to 3 do
   begin
    VSBitMap := Graphics.TBitMap.Create;
    VSBitMap.SetSize(xmax,ymax);
 ...
 
Früher war alles besser. Und aus Holz!

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verständnisfrage zu Canvas

Beitrag von m.fuchs »

Hm, vielleicht verstehe ich dich auch nur falsch. Hast du mal ein Minimalbeispiel mit dem Problem?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Verständnisfrage zu Canvas

Beitrag von AlterMann »

m.fuchs hat geschrieben:Hm, vielleicht verstehe ich dich auch nur falsch. Hast du mal ein Minimalbeispiel mit dem Problem?


Natürlich, gern.

Wenn ich mit Vorschau (also über den Umweg der Bitmap drucke, sieht es vergrößert aus wie in Test1.png

Test1.png


Schreibe ich direkt auf die Canvas (heißt das eigentlich die oder der :oops: ) des Printerobjekts sieht es so aus:

Test2.png


Wo ist diemal mein Denkfehler? :shock:
Dateianhänge
Drucktest.zip
(378.96 KiB) 78-mal heruntergeladen
Früher war alles besser. Und aus Holz!

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Verständnisfrage zu Canvas

Beitrag von theo »

Ganz kurze Antwort: Es ist halt nicht das gleiche, ob der Drucker einen Text oder ein Bild drucken muss.
Auf dem Bildschirm wird auch anders optimiert. Siehe z.B. http://www.smashingmagazine.com/2012/04 ... rendering/

Die lange Antwort musst du selber googlen. :wink:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2641
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verständnisfrage zu Canvas

Beitrag von m.fuchs »

Aha, es geht um die vergrößerte Ansicht. "Druck" mal beide Sachen mit FreePDF. Beim Druck ohne Vorschau kannst du den Text markieren und kopieren. Es wird also tatsächlich ein Textobjekt an den Drucker gesendet. Und das kann dann auch problemlos skaliert werden.
Beim Druck mit Vorschau funktioniert das Kopieren nicht. Hier werden die Pixel an den Drucker übergeben. Das sieht beim Zoomen einfach bescheiden aus.
Zuletzt geändert von m.fuchs am Fr 5. Sep 2014, 20:17, insgesamt 1-mal geändert.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Verständnisfrage zu Canvas

Beitrag von AlterMann »

Ach Du Schande!

Natürlich ist mir der Unterschied zwischen Text und Graphik im PDF (oder Postscript etc.) bewußt.

Aber ehrlich gesagt hätte ich dem Printerobjekt von Lazarus diese Unterscheidung nicht zugetraut (und auch gar nicht daran gedacht :oops: )

Naja, dann muß ich mal sehen wie ich meinen Usern eine Druckvorschau bastle und trotzdem ordentliche Ausdrucke zuwege bringe.

Danke an euch beide für die Bemühungen
Christian
Früher war alles besser. Und aus Holz!

Antworten