我注意到在Linux上,当使用QPainter::drawText与缩放窗口映射一起使用时,速度非常慢。有什么办法可以解决这个问题吗?我已经检查过禁用抗锯齿或启用光栅渲染器是否有所不同,但都没有效果。
例如:当使用视口大小为(450px,200px),窗口大小为100倍因子(45000,20000),因此字体大小也增加了100倍(1400pt)时,在Linux上渲染30次文本“hello”大约需要4秒钟 - 在OpenSuse和Ubuntu上都是如此。
相同的示例在Windows和Mac上渲染得很快。
仅供澄清:虽然字体大小被缩放了,但由于所述的窗口<->视口映射,文本显示在屏幕上的尺寸是“正常”的。
这是我使用的简单示例代码:
任何帮助都会非常棒。
注意:我正在使用Qt 4.8.5版本。
例如:当使用视口大小为(450px,200px),窗口大小为100倍因子(45000,20000),因此字体大小也增加了100倍(1400pt)时,在Linux上渲染30次文本“hello”大约需要4秒钟 - 在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