OnPrint: pDC->DrawText() -- anderer Drucker, andere Schriftgröße?

GeneSys386

Mitglied
Hallo zusammen,

Folgendes Problem: Ich hab in meiner Applikation nun in OnPrint eine gaaanz einfache Druckroutine implementiert. Ich definier mir eine Variable sText, fülle die mit meinen Daten. Erstelle mir ein RECT und mit
Code:
pDC->DrawText(sText, &rctColumnL, DT_LEFT);
setze ich die Variable nun auf die (virtuelle) Seite. Wenn ich also nun Drucken ausführe und das ganze am PDFCreator ausdrucke, sieht das wunderschön aus und funktioniert einwandfrei. Drucke ich das Dokument aber auf einem echten Drucker aus wird die Schriftgröße scheinbar größer und sprengt damit den Rahmen den ich in rctColumnL definiert habe (sprich: Das Ergbenis ist "beschnitten"). Ich hab nur leider keine Ahnung wieso und warum.

Liegt es daran das evtl. mit unterschiedlichen DPIs gedruckt wird? Hat ein Drucker einen Systemfont und weicht das Ergebnis deswegen ab?

Viell. kennt jemand das (wahre?) Problem und kann mir weiterhelfen. Ich wäre schon froh wenn man das Problem diagnostizieren könnte!

Dankeschööön!
 
Hi,

wo definierst du denn den Font? Wenn du keinen Font definierst, wird die Ursache sein, dass im Drucker-DC ein anderer Font benutzt wird als im Bildschirm-DC. Und welchen Map-Mode hast du im DC eingestellt?

Mfg

langer
 
Hallo!

Also ich ruf das ganze in der Funktion OnPrint auf (von daher hoff ich mal das ich nichts am Bildschirm zeichne mit der Routine ^^). Font hab ich keinen definiert, genausowenig wie ein MapMode (des is alles default) -- was mich nur wundert is, das der PDFCreator (installiert als virtueller Drucker) ein anderes Ergebnis ausspuckt wie der Ausdruck auf einem Lexmark C530. Aber möglich ist ja alles ...

Ich werde jetzt folgendes probieren:
1: Font definieren
2: Map-Mode dezidiert setzen

und dann hoffen das es geht ;) (seh ich das richtig?)

Danke schon mal für den Hinweis!
 
Hi,

der Standard-Drucker nimmt als default-Font den System-Font. Der PDF-Creator wird dort seinen eigenen Font haben.
Und als Standard-MapMode wird, wenn man das nicht ändert, MM_TEXT eingestellt. Und dort wird ein Bildschirm-Pixel als ein Druck-Punkt behandelt, wodurch der Druck vom Bildschirm stark abweicht. Allerdings wird dabei die Druckausgabe sehr klein, warum sie hier größer als beim virtuellen Drucker wird, vermag ich nicht zu sagen.
Ich verwende als MapMode immer MM_HIMETRIC, da ist Bildschirmausgabe und Druckausgabe identisch. Beachten muß man da nur, dass die y-Koordinaten von oben nach unten in negativer Richtung verlaufen.

Mfg

langer
 
Zurück