我注意到,在使用縮放窗口映射時,QPainter :: drawText在Linux上速度非常慢。我能做些什麼嗎?我已經檢查了禁用抗鋸齒或啓用柵格渲染器是否有所作爲,但事實並非如此。例如:當使用(450px,200px)的視口大小,因子100(45000,20000)的窗口大小以及由此因子100(1400pt)放大的字體大小時,渲染30次文本「 hello「在Linux上花費大約4(!)秒 - 在OpenSuse和Ubuntu上都是如此。Linux上QPainter :: drawText性能不佳
相同的示例在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