Seite 1 von 1

Qt4: Aufloesungsunabhaengig zeichnen / drucken

Verfasst: 25. August 2008 11:51
von nando
Hi,
vielleicht kann mir jemand helfen. ich habe folgende situation:

In einer XML datei steht ein beschreibung des layouts einer seite die ich drucken will. Sozusagen ein Template fuer ein Formular.
Es wird beschrieben von wo nach wo linien gezeichnet werden sollen, es werden ueberschriften gezeichnet usw....
z.b eine leere rechnung....
da steht dann z.B. sowas wie:

<LINE x1Pos=10 y1Pos=10 x2Pos=340 y2Pos=10/>

In einem QWidget in paintEvent wird dann in diesem Fall eine Linie gezeichent
von painter.drawLine(10,10,340,10) ...

Jetzt habe ich das Problem, dass wenn ich dann diesen painter drucke abhaengig von der aufloesung verschiedene Ergenisse rauskommen....

wie kann ich denn ein mapping schaffen von 10,10,340,10 so, dass das Ergebnis UNABHAENIG VON DER AUFLOESUNG immer identisch auf dem Drucker erscheint ??

sorry, aber bin echt bissi am verzweifeln, weil mir nicht ganz klar ist wie ich das anstellen soll......

gruss,
nando

Verfasst: 25. August 2008 12:28
von upsala
Du willst also, daß deine 340(?) auf dem Drucker immer 340mm sein sollen? QPrinter ist von QPaintDevice abgeleitet und liefert dir (wenn es die Treiber richtig mitteilen) DPI, mithilfe derer du umrechnen kannst.

Verfasst: 25. August 2008 12:36
von nando
Genau..also die angabe in der xml datei sind pixel...

und in paintEvent zeichne ich dann anhand dieser pixel information....

zu diesem zeitpunkt spielt der printer noch keine rolle.....

erst wenn ich dann einen druckauftrag schicke... will ich, dass dieser painter gedruckt wird... und dann unabhaengig von der aufloesung..

also sollen 340px immr Xcm sein aufm papier.....

wie soll ich dass denn dann an den qpainter uebergeben...
also wo soll ich dieses mapping einbauen?

Verfasst: 25. August 2008 13:13
von CaptnChaos
px * dpi
printer.device()->dpiX();
printer.device()->dpiY();

Verfasst: 25. August 2008 23:09
von nando
KernelPanic hat geschrieben:px * dpi
printer.device()->dpiX();
printer.device()->dpiY();
Hmmm geht es vielleicht bissi genauer ??? ;)

Verfasst: 26. August 2008 09:03
von upsala