
paprikaの日記: Qt 5.3.0 で印刷するとずれる 6
日記 by
paprika
Qt 5.2.1 から Qt 5.3.0 への移行を評価中です。
Qt 5.3.0 では、印刷機能の改修が行われたそうなのですが、そのせいか、問題が出ております。
QPrinter クラスで印刷を行うと、右下方向に10mm程度ずれて印刷されてしまうという症状です。
↓に詳細をまとめました。
http://blog.soramimi.jp/?p=185
どなたかわかる方いらっしゃらないでしょうか?
解決しました (スコア:1)
対策できました。
http://blog.soramimi.jp/?p=189 [soramimi.jp]
・ 用紙座標とページ座標 [qt-project.org]があって、QPainterで描画する際には、ページ座標が用いられる。
・ Qt5.3.0未満では、用紙座標の原点とページ座標の原点が共に(0, 0)だった。
・ Qt5.3.0では、ページ座標の原点にオフセットが付いてている。
そんなわけで、painter.setTransformで、明示的に座標変換する必要があるようです。
Re: (スコア:0)
それはそれとして、QPageLayout::setMode() では解決できないかな?
できました! (スコア:1)
layout.setMode(QPageLayout::FullPageMode);
ですね。今まで知りませんでした。
期待通りに動作しました。もうしばらく検証してみますが、
たぶんこれが最もスマートで最良の解決策だと思います。
QTransformとか面倒なもの使わなくて済むし、素晴らしいです。
ありがとうございます。
なにいってんだかわからない…… (スコア:0)
おまえさん、自らX 0,Y 0で座標指定してるやん?
0, 0から描き初めるんだから、むしろ今迄が間違ってただけで、それで正しいのとちゃうの?
均等にはみ出させたいなら、ど真ん中をQPoint指定してやらなきゃ駄目やろ?
まあ紙のサイズを決め打ちするなら、マイナスの座標指定でもいいのかもしらんけどさ。
いずれにせよ、おまえさんが何を求めていて、どうしたいのかわからんわ。
Re:なにいってんだかわからない…… (スコア:1)
drawEllipseって、リファレンスに「the rectangle beginning at (x, y) with the given width and height」って
書いてある。開始座標と幅と高さを指定するんよ?中心と半径じゃなくて。
で、期待する結果としては、用紙の左上隅が(0, 0)になるような描画ね。
Qt 5.3.0で(0, 0)に何か描くと、それが右下方向にずれるっていう話です。
Re: (スコア:0)
そもそもQPainterにプリンタぶん投げて、drawEllipseってのからしてキモいな……
順番逆じゃね?
サイズオーバーした楕円を初めに作っておいて、それをプリンタにぶん投げたら挙動も変わりそう。