• 5878阅读
  • 4回复

画图的问题 [复制链接]

上一主题 下一主题
离线lzpmail
 
只看楼主 正序阅读 楼主  发表于: 2011-04-01
我想请问下,qt下画图是不是只能在paintEvent()里实现,而在其它的函数中不能实现呢,我现在想画波形图,不想在paintEvent()画,请高手指点一二啊
离线lzpmail
只看该作者 4楼 发表于: 2011-04-01
谢了,听了好像我似乎明白了点什么
离线sbtree
只看该作者 3楼 发表于: 2011-04-01
画图在哪里实现实际上都不重要,这依赖于设计者的想法,重要的是要把图形在正确的响应时间内映射到绘图设备上,也可能是一个虚拟的绘图设备。
paintEvent只不过是一个事件响应函数而已,它提供了一种功能,就是在窗口需要刷新的时候把你期望的界面绘制出来,我们可以利用它,但一定要注意效率,避免隐式循环调用。
这里要理解两个概念,一个是事件机制,一个是绘图映射。只要理解他们了,万变不离其踪。
所有事件都是由操作系统提供的,毕竟我们还是在操作系统之上编写程序,由操作系统分发给不同的应用程序的,然后应用程序通过操作系统函数获取事件数据再做出响应,这样每个应用程序就会需要这样一个响应函数,也就是事件循环,针对不同的事件类型,又可能会定义不同的事件函数,paintEvent就是窗口部件的事件函数之一,完成一次重画事件中图形到设备的映射,当然这个映射不是简单的一步操作,其中还有很多其他类的支持。其次还需要一点算法方面的知识,毕竟绘图是一件很耗费系统时间的事情,所以要讲点技巧,比如QT的双缓冲设计。

这里又提到了线程,又是一大堆麻烦的事情,从哪儿讲呢?以后慢慢整理之后再说吧

传播一点基础知识,可能偏离楼主的问题了,大家勿笑(大家:大方之家,不记得那段古文中出现的词了)
windows 7 + VC++2008 + Qt4.5.2
离线lzpmail
只看该作者 2楼 发表于: 2011-04-01
因为我的程序把取波形数据放在另外一个线程中,现在我想在这个线程中画出波形图,不想在主线程中画,如果要在主线程中画的话就要考虑线程同步问题,我现在线程同步用的是QMutex,由于画图占用的时间比较多,当有数据来了时,要等待画图线程unlock缓冲区
离线dbzhang800

只看该作者 1楼 发表于: 2011-04-01
引用楼主lzpmail于2011-04-01 09:13发表的 画图的问题 :
我想请问下,qt下画图是不是只能在paintEvent()里实现,而在其它的函数中不能实现呢,我现在想画波形图,不想在paintEvent()画,请高手指点一二啊

先给出原因吧
快速回复
限100 字节
 
上一个 下一个