Chcę narysować tekst za pomocą QPainter
i chcę najpierw użyć QPainterPath
(ponieważ ostatecznie chcę obrócić tekst na wszystkie sposoby). Jednak uważam, że tekst wyprodukowany przez QPainterPath
jest znacznie brzydszy niż tekst wyprodukowany przez QPainter
.Tekst z QPaintera o wiele ładniejszy niż z QPainterPath
Poniższy kod:
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();
}
produkuje następujące wyniki:
Były to wyraźnie znacznie czystsze i ładniejsze, szczególnie w mniejszych czcionek. Co powinienem zrobić, aby uzyskać ten sam wynik z QPainterPath
?
Produkuję powyższe wyniki na komputerze z Windows 7, z Qt 5.0.
Prawo, przynajmniej widzę co masz na myśli, że nie jest to konwersja dzieje, chociaż nie rozumiem, co to oznacza w praktyce (zamknięte podścieżki?), a jeśli jest to coś, co może być unikanym. Niestety, rotacja 'QPaintera' najpierw pogorszy sprawę, ponieważ wygładzanie nie jest obsługiwane w przypadku tekstu obróconego. – Yellow
Wiem, że to Java, ale odpowiedź na to pytanie krótko wyjaśnia ścieżki podrzędne: http://stackoverflow.com/questions/4662295/what-is-path-subpath-in-java2d – TheDarkKnight
Jeśli chodzi o pytanie, czy można tego uniknąć, używasz QPainterPath, nie sądzę, że otrzymasz dokładnie taki sam wynik. Być może uda Ci się ustawić niektóre typy renderowania, które mogą je ulepszyć, takie jak QPainter :: TextAntialiasing. Zwróć uwagę, że są to flagi, więc można ich używać w połączeniu. – TheDarkKnight