Zitat von
Rossi123:
Ich habe einen Drucker der mit 600 dpi druckt, damit druckt er mein TImage (2480*3508) aber zu klein aufs blatt...
Ich habe auch schon versuch, die auflösung der TImage an die dpi meines Druckers anzupassen(4961*7016), jedecoh kommt bei mir dann die fehlermeldung, das dafür nich genügend speicher vorhanden sei...
Hi,
was dein Problem angeht, so ist es ein recht typisches für's Drucken. Mein Tipp deswegen natürlich: einfach mal suchen (
drucken).
Jedenfalls ist das Problem, dass du ein
GDI-Device ansprichst, dahinter kann sich jetzt ein Drucker, ein Bitmap oder irgendwas anderes (ein Graphisches Device) befinden. Dessen Auflösung kannst du zwar leicht abfragen, aber nicht zwangsläufig auch setzen. Natürlich stellt das bei einem Drucker (i.d.R.) kein Problem da, nur unterstützt jeder Drucker eine Auflösung von 300 dpi? Kannst du kaum garantieren, bei Bildern sieht es dann noch um einiges Problematischer aus.
Besser ist es daher, dass du einfach das Bild so ausgibst, dass es auf jedem Device die gleiche größe hat. Um die entsprechende Skalierung kümmert sich das
GDI (z.B. die Funktion StretchDraw eines Canvas). Hier kannst du angeben welcher Bereich des Quellcanvas in welchen Bereich des Zielcanvas kopiert werden soll. Dabei wird die Information des Quellcanvas aut. an die Dimensionen des Zielcanvas angepasst (ebend gestreckt/gestaucht).
Um hier die richtige Zielgröße angeben zu können hast du zwei Möglichkeiten:
- Du kannst mittels der Funktion GetDeviceCaps die Größe und Auflösung abfragen und hier ausrechnen wie groß dein Zielbereich sein müsste
- Du setzt mittels setMapMode die Einheit des Zielcanvas auf etwas absolutes (mm, inch, 10tel mm, 10tel inch), so dass du hier unabhängig von der Auflösung immer die gleiche Größe angeben kannst.
Das Bild der Größe anzupassen ist natürlich keine gute Lösung, stell dir einfach mal vor, du schließt einen Drucker mit 2400er oder 4800er Auflösung an...
Gruß Der Unwissende