Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用QT平滑文本动画(选框文本效果)_Performance_Qt_Qt4_Marquee - Fatal编程技术网

Performance 使用QT平滑文本动画(选框文本效果)

Performance 使用QT平滑文本动画(选框文本效果),performance,qt,qt4,marquee,Performance,Qt,Qt4,Marquee,我有一个关于如何在功能不强的硬件(Atom N270+Intel 945GSM)上使字幕文本平滑(使用Qt 4.5.3)的问题。我的做法如下: 我将文本(36px Arial bold)绘制到QPixmap(屏幕外绘制设备)上 我设置了一个计时器,每30毫秒将1px内容向左移动一次 触发onTimer事件时,我选择QPixmap并将此部分打印到窗口画布上 一般来说,它运行平稳。然而,我创建的字幕文本越多,它的CPU使用率就越高。当文本可以填充50%的屏幕(1920x1680)时,CPU使用率约为

我有一个关于如何在功能不强的硬件(Atom N270+Intel 945GSM)上使字幕文本平滑(使用Qt 4.5.3)的问题。我的做法如下:

  • 我将文本(36px Arial bold)绘制到QPixmap(屏幕外绘制设备)上
  • 我设置了一个计时器,每30毫秒将1px内容向左移动一次
  • 触发onTimer事件时,我选择QPixmap并将此部分打印到窗口画布上
  • 一般来说,它运行平稳。然而,我创建的字幕文本越多,它的CPU使用率就越高。当文本可以填充50%的屏幕(1920x1680)时,CPU使用率约为70-80%。文本动画变得有点闪烁。如果我将计时器间隔设置为50毫秒或更大,它将是平滑的。但是文本移动太慢了


    我的方法无效吗?我应该使用OpenGL吗?欢迎提供任何提示并提前感谢^^)

    您应该查看图形视图框架。您可以将QGraphicsTextItem对象添加到QGraphicscene,并设置视图的坐标(缩放和平移),以使文本移动并显示任意大小,包括将部分文本设置为“屏幕外”(视图外)。我希望这比在每个计时器事件中复制和绘制QPixmap的(不同大小)部分要高效得多

    文档说明图形视图框架经过优化,可以同时处理多个对象。如果结果证明没有任何改进,您可能希望尝试一下4.6测试版。图形视图渲染即将进行优化


    作为旁白,我想看看QTimeLine,它可以帮助您驱动动画。除了每隔一段时间提供基本的“刻度”之外,您还可以设置“曲线形状”,使其开始时变慢,然后加速,或者在接近终点时变慢。请注意,如果要在finished()信号后重新启动QTimeLine,如果更改持续时间并调用start(),而不调用setCurrentTime(0),计时器将以旧的持续时间作为当前时间启动。

    我以前尝试过QGraphicsSense,但文本看起来有锯齿。我不知道为什么。明天我将重新实现我的代码并分享结果。我在渲染QGraphicsPixmapItems时也注意到了别名,即使我确实查看了.setRenderInts(QPaint::Antialiasing | QPaint::SmoothPixmapTransform)。但对于QGraphicsPathItems,别名并不明显。当您使用较大字体时,我希望您使用QGraphicsTextItem时运气更好。当您尝试QGraphicscene时,是否按照问题中的描述首先渲染到pixmap?是的,我首先渲染到pixmap QGraphicsPixmapItems。但我认为QGraphicsTextItem不支持字幕文本效果。好的,我现在理解这个问题了。我想知道使用Graphics View框架时性能是否更好(即使渲染到QGraphicsPixmapItem)。我计划深入研究别名问题,但这需要一些时间。如果我发现了什么,我会发回的。事实证明,为了应用平滑,必须在QGraphicsPixmapItem上调用setTransformationMode(Qt::SmoothTransformation)。在视图上调用SetRenderInts似乎没有效果(至少在X11上),尽管QGraphicsPixmapItem的文档称转换质量取决于视口。在我看来,质量不是很好。最好能更好地控制可用的抗锯齿过滤器的类型。