如何实现趋势图滚动显示的高效显示? 是一个实时滚动的趋势图,如何实现才最有效率呢?只要提出算法就可以了。不知会不会有比我现在的算法效率更高的。注意背景坐标网格是固定的,不随趋势线的滚动而滚动的。有好的解决吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是用两层位图。每次先贴背景。上边一层透明,上边的趋势曲线位图每次左移一点(最左边一个步长的丢掉),然后把最新一个步长的曲线绘上去,然后再贴到背景上。这样需要好多bitblt操作 我在CODEGURU找到了一个用C写的示波器控件的例子,好象跟我的方法差不多。我的问题的关键是要在趋势图滚动的时候绘图效率要高。还有,原来的旧曲线还要擦除呀。这里用异或笔是不行的,因为这样的话曲线的颜色就不能保证了。用VB我以前是用两片picture box来交替滚动的,也就是说用新的picture box把旧的picture box向右顶。完全顶出去后就把它接到图形左边。这样每次滚动只需要重绘新出来的那部分曲线。不过picture box可是是透明的吗?可以透出后边的固定背景吗? 是用两层位图。每次先贴背景。上边一层透明,上边的趋势曲线位图每次左移一点(最左边一个步长的丢掉),然后把最新一个步长的曲线绘上去,然后再贴到背景上。这样需要好多bitblt操作这个不应该花太多时间另外你可以创建一个16色,或者256色的位图来操作,完全能満足要求 http://codeproject.com/docview/graphfx.aspCodeProject上本来还有另一个更好的例子的,不过我在那里已经找不到了如果你需要的话我可以把代码发给你,曲线图的显示,应该还不错我用了显示高速波形图的 qrlvls(怜松):请打包后发到 多谢!demetry(智者橡木):商用代码比较成熟可是不够好玩。其实只需要知道一些好的思路而已。Coding is only a manual labour, right? ZT先调用 ScrollWindow(Ex) 将当前窗口显示整体上移(超出的部分自动被 DC 剪切), 然后计算上移后未覆盖的 rect,调用: InvalidateRect(hWnd, &rect, TRUE);UpdateWindow(hWnd); 其实你的方法应该不错的!bitblt花的时间应该是最短的,ScrollWindow其实也是用了bitblt如过你还要快,请用DDraw 还有一个细节提醒大家:为了实现前景透明,必须先在背景上用AND笔贴白底黑曲线,然后用OR笔帖黑底彩色曲线。当然,先用黑底白曲线用OR笔留个白轨迹,然后再用AND笔贴黑底彩色曲线也是一样的。 讨论:假如上百G的数据量,每3秒左右需要对全部查询访问一次,使用什么方法好? 关于并行任务死锁 问个问题 单文档新建时候如果让他不打开一个新的工程 高难度问题.. 服务形式的COM的入口函数在哪里啊?? 大侠们,ATL里这样用,竟然不行????? 我想关闭一个本地端口,是否用CSocket.Close()?谢谢 关于MAPX的问题~~~凡是开发过mapx的同志们都进来吧~ VC中禁止flash声音后怎样恢复? 200分求小菜菜问题[急,在线等] SOS!!已经完成的程序重新编译发现cannot open include file 'afxres.h'错误?
我的问题的关键是要在趋势图滚动的时候绘图效率要高。还有,原来的旧曲线还要擦除呀。这里用异或笔是不行的,因为这样的话曲线的颜色就不能保证了。
用VB我以前是用两片picture box来交替滚动的,也就是说用新的picture box把旧的picture box向右顶。完全顶出去后就把它接到图形左边。这样每次滚动只需要重绘新出来的那部分曲线。不过picture box可是是透明的吗?可以透出后边的固定背景吗?
另外你可以创建一个16色,或者256色的位图来操作,完全能満足要求
CodeProject上本来还有另一个更好的例子的,不过我在那里已经找不到了
如果你需要的话我可以把代码发给你,曲线图的显示,应该还不错
我用了显示高速波形图的
demetry(智者橡木):商用代码比较成熟可是不够好玩。其实只需要知道一些好的思路而已。Coding is only a manual labour, right?
先调用 ScrollWindow(Ex) 将当前窗口显示整体上移(超出的部分自动被 DC 剪切), 然后计算上移后未覆盖的 rect,调用:
InvalidateRect(hWnd, &rect, TRUE);
UpdateWindow(hWnd);
如过你还要快,请用DDraw