1

この画像に描画する QImage と QPainter があります。ペイントした後、QTextCursor の insertImage メソッドを使用して、この QImage を QTextDocument に挿入しようとしました。

QImage image(width ,height,QImage::Format_RGB32);
QPainter paint;
paint.begin(&image);
paint.drawText(25,25,someText);
paint.end();
QTextCursor cursor(doc);
cursor.movePosition(QTextCursor::End);
cursor.insertImage(image);

しかし、これを行った後、私が得たのは、この画像のような低解像度または線幅のたるんだピクセルのテキストです:

!( http://imgim.com/4698inciz7774617.png )線画

QTextDocument のレイアウトのペイント デバイスを設定しようとしましたが、null ポインターが原因でエラーが発生しました。これは、ドキュメントにレイアウトがないためである可能性が高く、ペインターのレンダリング ヒントを設定しようとしましたが、うまくいきません。ドキュメントの画像の前にいくつかのhtmlを挿入しましたが、解像度の点では良好で、平坦な線でも問題ありません。このドキュメントを QTextEdit で表示すると問題ないように見えますが、これがプレビューの PDF ファイルにある場合、または何か問題が発生します。私のプリンターはプレビューで次のように定義されています。

QPrinter printer(QPrinter::HighResolution);
QPrinter highprinter(QPrinter::ScreenResolution);
printer.setPaperSize(QPrinter::A4);

そして、印刷のために QTextDocument の print メソッドを呼び出します。これに対する解決策はありますか?ありがとう

4

1 に答える 1

0

垂れ下がったピクセルは、QPainter::setRenderHint(QPainter::Antialiasing, true); でどうにかして取り除くことができます。ただし、文字の垂れ下がったピクセルはあまり解消されないようです。垂れ下がったピクセルを完全に除去する別の方法は、大きなピクセル サイズ (解像度) のドキュメントを作成し、画像のサイズを大きくすることです。その後、フォント ポイント サイズと線幅を大きくすることができます。

//increasing line width when drawing line
paint.setPen(QPen(Qt::gray,20, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));
//increasing font's point size  when using text
qFont2.setPointSize(100);
paint.setFont(qFont2);

ただし、画像のピクセル サイズ (解像度) が同じ場合、フォント ポイント サイズを大きくしてもエイリアシングは防止されません。

于 2014-08-01T09:35:19.463 に答える