zoukankan      html  css  js  c++  java
  • QT显示如何减轻闪屏(双缓冲和NoErase)

    很多同志在些QT 程序后会遇见闪屏的问题, 有时速度非常快,但毕竟影响了显示效果,如何做到减轻屏幕抖动或闪屏呢?
    我曾试过如下的办法:
    1.使用双缓冲。 比如我们在一个Widget里面绘多个图的话, 先创建一个QPixmap对象 然后用QPainter在这个QPixmap对象上绘图,最用后BitBlt 将数据copy到active painterDev上就可以了。
    2.QWdiget 对象在重绘的时候选择NoErase。 调用repaint(false)即可,  这样可以防止在绘图的时候 系统会先将整个Region 擦除,这样也可以避免闪屏。 但这个还不足以 去除闪屏,因为系统自己也会调用repaint函数,可能他会erase 需要绘图的QRegion区域, 因此要确保不擦除,需要在QWidget对象中设置WFlags: WRepaintNoErase 属性。 在QT3中 好像直接通过SetWFlags不会起作用,需要在QWidget构造函数中传入这个参数。
    有人说或如果不擦除图片 会不会画面残留上次的绘图结果,  这个需要我们自己在绘图的时候做清除,因为是在QPixmap上绘图 并不影响系统中Active painterDev 所以 擦除不会引起屏幕闪烁。

    http://blog.sina.com.cn/s/blog_668aae7801017gj9.html

  • 相关阅读:
    redis哨兵模式
    zookeeper 日志输出到指定文件夹
    Zookeeper运维问题集锦
    应用层、传输层、网络层常用协议
    链表排序
    集线器、交换机、路由器的区别
    C链表
    virtio/pass-through
    shell脚本实例
    KVM虚拟化相关-进阶
  • 原文地址:https://www.cnblogs.com/findumars/p/5055046.html
Copyright © 2011-2022 走看看