私はQPainter::setRenderHint(QPainter::Antialiasing, true)
Qtに、私が行うすべての描画(この場合は)で描画されたテキストをアンチエイリアス処理するように指示するために使用しますdrawText()
。
これは正常に機能し、描画しているピックスマップを回転させたいまで、テキストは見栄えがします。
Painter.translate(0, height());
Painter.rotate(-90);
(QPainterを反時計回りに90度回転し、表示に戻すには)
toを呼び出すとrotate()
、描画されたテキストのアンチエイリアスが無効になっているようです。テキストは正しい回転で描画されますが、アンチエイリアスは使用されません。他のものは影響を受けていないように見えます-たとえばdrawLine()
、それでもうまくアンチエイリアスされた線を描画します。
私が間違っていることについて何か考えはありますか?
編集:当然のことながら、パスにテキストを追加してからそのパスを埋めると、アンチエイリアス処理された回転したテキストが得られます。ただし、可能であればこのルートは避けたいと思います。
編集(再度):使用QFont::setStyleStrategy(QFont::PreferAntialias)
しているフォントで使用してみましたが、効果がありません。ただし、さらに実験を重ねると、Arialのような基本フォントは回転してもアンチエイリアス処理されたテキストが生成されますが、私のカスタムフォント(興味のある人はSwiss721 BlkCn BT)は生成されません。さらに、この問題はWindows 7に存在しますが、Ubuntuで実行している場合は同じ問題は発生しません。このFAQの記事は、Qtがフォントのアンチエイリアスを処理するためにホストOSを参照していることを示唆しているようです。したがって、この特定のフォント(Arialと同様にTrueType)のレンダリングを処理する際にWindowsでどのような問題が発生する可能性がありますか?
編集(前回、約束します):フォントサイズを16pt以上に上げると、問題が解決します。問題は私の特定のフォントを16pt未満にレンダリングすることにあるように思われます-おそらく上記のブログ記事で言及されたものと関係がありますか?:
Windows 2000では、フォントは通常、テキストをより鮮明で読みやすくするために、特定の範囲(たとえば、サイズ8〜16)内でアンチエイリアス処理されません。