QPainter
を使用してテキストを描きたいので、QPainterPath
を最初に使用します(最終的にはあらゆる種類のテキストを回転させたいからです)。しかし、私はQPainterPath
によって生成されたテキストがQPainter
によって生成されたテキストよりもはるかに醜いことがわかります。QPainterからのテキストがQPainterPathよりもずっと良かった
次のコード:
前者が特に小さいフォントで、明らかに非常にクリーンとよりよいです:
void MyWidget::paintEvent(QPaintEvent* /*event*/) {
QFont font;
font.setStyleHint(QFont::Times, QFont::PreferAntialias);
font.setPointSize(30);
QPainter painter;
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(Qt::black);
painter.setFont(font);
painter.drawText(10, 40, "Hello World");
QPainterPath textPath;
textPath.addText(10, 100, font, "Hello world");
painter.drawPath(textPath);
painter.end();
}
には、以下の結果が得られます。 QPainterPath
から同じ結果を得るにはどうすればよいですか?
私は上記の結果をWindows 7コンピュータでQt 5.0で生成しています。 QPainterPathにテキストを追加するためのQtのドキュメントによれば
右2" と、それはそれができるものなら世界避けてください。残念ながら、 'QPainter'を回転させると、アンチエイリアスは回転したテキストには対応していないので、まず悪いことになります。 – Yellow
私はそれがJavaだと知っていますが、この質問の答えは簡単にサブパスを説明しています:http://stackoverflow.com/questions/4662295/what-is-path-subpath-in-java2d – TheDarkKnight
避けることができるかどうかを尋ねると、あなたはQPainterPathを使用していますが、まったく同じ結果が得られるとは思いません。あなたは、QPainter :: TextAntialiasingのような、それを改善するかもしれないペインタのレンダーヒントのいくつかを設定することができます。それらはフラグであり、組み合わせて使用できることに注意してください。 – TheDarkKnight