加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux上QPainter :: drawText的性能不佳

发布时间:2020-12-14 02:13:41 所属栏目:Linux 来源:网络整理
导读:我注意到,当使用缩放窗口映射时,QPainter :: drawText在 Linux上非常慢.我能做些什么吗?我已经检查过禁用消除锯齿或启用光栅渲染器是否有所作为,但事实并非如此. 示例:当使用视口大小(450px,200px)时,窗口大小为因子100(45000,20000),因此字体大小按比例缩
我注意到,当使用缩放窗口映射时,QPainter :: drawText在 Linux上非常慢.我能做些什么吗?我已经检查过禁用消除锯齿或启用光栅渲染器是否有所作为,但事实并非如此.

示例:当使用视口大小(450px,200px)时,窗口大小为因子100(45000,20000),因此字体大小按比例缩放100倍(1400pt),渲染文本“hello”的30倍左右在Linux上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,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

解决方法

这个问题已经很老了但是因为Qt bug似乎仍未解决,所以我们去…

不确定这可能是一个选项,但在我工作的两个项目中,我们实现了标签,这些标签首先在内部渲染为pimap / image然后绘制.
因此,在透明背景的图像中缓存文本应该可以解决问题.

我不认为它在这里有所作为,但您也可以检查QStaticText是否对您的案例中的性能产生有益影响.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读