Und wieder mal Drucken
-
Ich versuche mit eine 10 Mm. lange Linie mit hilfe von Printer() Objekt auszudrucken. Die Linie soll horizontal mit Koordinaten 25mm von Links und 25 Mm. von Oben ausgedruckt werden.
nun mein Problem ist das ich es nicht hinkrige, dass mein Linie richtig ausgedruckt wird. Sie ist auf dem Ausdruck nicht 10 Mm. lang sonder 13 und Position ist nicht (25, 25) sonder (28, 28) mm.
Weiss jemand wie ich die Koordinaten für Drucker richtig berechnen kann?
-
Wie skalierst Du das Ganze?
Ich neh'm
DBW->Caption=GetDeviceCaps(PrinterInstanz->Handle,HORZSIZE);
DBH->Caption=GetDeviceCaps(PrinterInstanz->Handle,VERTSIZE);fuer Druckbereich in mm.
Fuer Position musste die Seitenraender auslesen und korrigieren. Schau mal bei GetDeviceCaps nach, vielleicht steht dort was.
-
Wenn ich so umrechne, dann stimmt das einigermassen:
100 Mm. lange Linie
int m = GetDeviceCaps(Printer()->Handle,HORZSIZE);
int w1 = Printer()->PageWidth;int l1 = (100.0 * (float)w1 / (float)m);
Printer()->Canvas->MoveTo(0, 100);
Printer()->Canvas->LineTo(l1, 100);aber, was ich nicht verstehe, wie rechnet Borland PageWidth aus? Mit GetDeviceCaps habe ich die Werte von PageWidth nicht rauskrigen können.
-
Schau mal bei GetDeviceCaps unter:
PHYSICALWIDTH
PHYSICALHEIGHT
PHYSICALOFFSETX
PHYSICALOFFSETY
nach