您的位置:程序门 -> vc/mfc -> 基础类



关于绘图的问题,sos!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于绘图的问题,sos!
发表于:2007-07-03 09:15:20 楼主
我对整个绘图的过程还是有点迷糊。

基于document/view,我的绘图函数放在view类的ondraw()函数里,画方波,数据量很大,实现波形的左右移动和放大缩小。

左右移动是通过滚动条来实现的,放大缩小是自己写的两个按钮,在缩放的消息响应函数里改变窗口大小与视口大小的比例,再调用invalidrect()使触发wm_paint消息调用ondraw()函数,使图形重绘。

问题来了,在调用invalidrect()之前,我获得了无效矩形区域,重绘应该只绘制该无效矩形区域内的图形,但是,invalidrect()导致调用ondraw函数,我的绘图函数就放在ondraw里,等于说每次   重绘都是把所有图形再绘制一遍,由于波形的   数据量很大,每次都重新绘制,时间根本   无法忍受,怎么解决这个问题呢?

invalidrect()只重会无效矩形区,是怎么个绘制法呢,怎么个机制呢?我晕了
那位达人帮帮忙,想来   学习的大家也一起讨论
发表于:2007-07-03 09:36:041楼 得分:0
能不能这样?
左右移动时,每次获取移动范围   大小(设备坐标),计算该范围内可绘制多少个波形的状态数,在波形数据中,移动绘制起始和结束状态指针,作为参数传递给波形绘制函数,波形绘制函数仍然放在ondraw函数中,每次重会都更新这两个参数。但是,由移动范围很难精确的定位到波形的起始结束状态数,这又是一个问题,另外,在缩放时,也很难定位。
怎么办啊,郁闷
发表于:2007-07-03 09:42:042楼 得分:0
可以用cdc::getclipbox获取dc中的无效矩形,判断在矩形外面的点就不需要绘制。
发表于:2007-07-03 09:53:333楼 得分:0
由于波形图像对应的是波形数据,所以需要根据波形图像索引对应的波形数据状态,波形移动了,点也就移动了,需要早波形数据中重新定位起始绘图状态点和结束点,对么?
发表于:2007-07-03 10:06:464楼 得分:0
使用invalidrect()之后,是系统自动去判断哪些图像在无效区内,然后自己去重会,还是我要告诉他重绘什么
发表于:2007-07-03 10:21:215楼 得分:0
救命亚
发表于:2007-07-04 16:36:516楼 得分:0
在按钮响应函数里,将你想重绘的曲线绘成背景色,然后再绘坐标变换后的曲线,不知能满足你的要求不


快速检索

最新资讯
热门点击