Я заметил, что QPainter :: drawText очень грубо работает на Linux при использовании масштабированного отображения окна. Есть ли что-нибудь, что я могу сделать по этому поводу? Я уже проверял, делает ли отключение сглаживания или включенным растровым рендерером, но это не так.Плохое исполнение QPainter :: drawText на Linux
Пример: При использовании размера окна просмотра (450 пикселей, 200 пикселей) размер окна 100 (45000, 20000) и, следовательно, размеры шрифта также увеличены в 100 раз (1400pt), обеспечивая в 30 раз больше текста " hello "занимает около 4 (!) секунд в Linux - как на OpenSuse, так и на Ubuntu.
Те же образцы отображаются в Windows и Mac.
Только для уточнения: хотя размер шрифта увеличен, текст появляется в «нормальном» размере на экране из-за описанного окна < -> отображение видового экрана.
Вот простой пример кода, я использую:
void Widget::paintEvent(QPaintEvent *event)
{
const int scaleFactor = 100;
QPainter painter(this);
// Setup font
QFont font;
font.setPointSize(14*scaleFactor);
painter.setFont(font);
// Setup mapping
painter.setWindow(0, 0, width() * scaleFactor, height() * scaleFactor);
// Render the text
for (int i = 0; i < 30; i++)
painter.drawText(qrand() % (width() * scaleFactor), qrand() % (height() * scaleFactor), "Hello");
}
Любая помощь будет удивительным.
Примечание: Я использую Qt 4.8.5
Вы пытались нанести маску живописцем с помощью 'painter.scale (scaleFactor, scaleFactor);' вместо установки прямоугольника окна? Это имеет значение? – vahancho
Я сделал быстрый тест прямо сейчас. Это не имеет значения. – Fabian
Хорошо. Чем, может быть, вы могли бы подумать о пределе области рисования видимым, который намного меньше, чем 45000x20000px? – vahancho