AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Drucken auf verschiedenen Druckern = unterschiedliche Größe
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken auf verschiedenen Druckern = unterschiedliche Größe

Ein Thema von oakley · begonnen am 18. Nov 2006 · letzter Beitrag vom 21. Nov 2006
Antwort Antwort
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#1

Drucken auf verschiedenen Druckern = unterschiedliche Größe

  Alt 18. Nov 2006, 18:46
Hi liebe Forumsgemeinde

Ich habe ein bischen mit der Druckfunktion in Delphi herumprobiert und muß sagen.. so weit so gut.

Mir ist eine Sache aufgefallen:

Wenn ich den Ausdruck eines BIldes auf dem MicrosoftImagingPrinter (oder so), das ist dieser Drucker, der dem Ausdruck als Bild speichert, mache, bekomme ich mit:

Delphi-Quellcode:
    x.Left := PageSetupDialog1.MarginLeft;
    x.Right := Round(Image1.Picture.Graphic.Width * 3.2);
    x.Top := PageSetupDialog1.MarginTop;
    x.Bottom := Round(Image1.Picture.Graphic.Height * 3.2);
    Printer.BeginDoc;
         Printer.Canvas.StretchDraw(x,Image1.Picture.Graphic);
    Printer.EndDoc;
bei obigem Skalierungsfaktor ein Bildfüllendes Ergebnis.
Wenn ich das gleiche auf meinem Hp Lasterjet mache habe ich max. ein Viertel der Seite belegt.

Kann das evtl. dara liegen, daß die beiden Drucker ein unterschiedliches Maßsystem haben? Sprich: HP Drucker misst z.B. in 1/10mm Einheiten und der MSImagingDrucker in 1/5mm Einheiten. Kann das sein?

Wenn ja, wie passe ich das im Code an, daß beide die gleiche Grundlage verwenden, oder ich das Problem umgehen kann?

Viele Grüße

Mirko
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Drucken auf verschiedenen Druckern = unterschiedliche Gr

  Alt 21. Nov 2006, 09:54
Hi,
ist ein typisches Problem beim Drucken, eigentlich solltest du da sehr sehr schnell mit der Suche fündig werden. Ich glaube die Funktion die das korrigiert heißt SetDeviceCaps (such einfach noch mal in der DP).

Mit deiner Einschätzung liegst du gar nicht so falsch, allerdings variiert nur die Auflösung des Druckers. Wenn du dir einen Drucker kaufst, dann findest du hier ja auch Laserdrucker im Bereich von 600x600dpi oder 1200x1200dpi und Tintenstrahler, die hier ganz andere Werte liefern. An sich bekommst du damit sogar unterschiedliche Ausgaben auf dem selben Drucker, wenn du hier einfach mal die Auflösung änderst.
Die Standardeinheit, mit der du hier arbeitest sind einfach Pixel. Da die Auflösung der Anzahl von Pixeln pro Inch entspricht, regelst du damit also auch immer die Größe eines Pixels. SetDeviceCaps bietet da die Möglichkeit, dass du eine andere Einheit (z.B. zehntel-millimeter) verwendest, die dann unabhängig von der Pixelgröße ist.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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