MFC中如何实现指定区域的重绘

ackol_love 2010-07-06 04:06:29
我想做出一个类似股票分析软件K线图显示的鼠标拖动的重绘效果。也就是只让局部区域重绘。并在鼠标的平移拖动时才重绘。
方法大致有:
(1)用双缓存以及画布来实现。
(2)用位图方式不知道能否实现。
(3)使用类的串行化功能,重写CDoc类中的Serialize()函数,实现图形数据的保存与再现。
(4)使用MFC中的元文件来实现图形数据的保存与再现。
(5)设置DC的重绘范围,获取所想要重绘区域的Rect;
不知道以上所说的方法对不对。但是我想知道第一种方法具体如何实现。望高手指点,小弟不胜感激!
万分紧急!
...全文
1213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingshaohumooner 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ackol_love 的回复:]
不好意思,好久没上来看了。问题也已经解决了。谢谢大家了,用双缓存可以实现。我结帖了。
[/Quote]

请指教。说说您解决的方法~~~~~~~~~~
ackol_love 2010-07-31
  • 打赏
  • 举报
回复
不好意思,好久没上来看了。问题也已经解决了。谢谢大家了,用双缓存可以实现。我结帖了。
zgsdzhaolanxiang1 2010-07-10
  • 打赏
  • 举报
回复
双缓冲
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)
CRect rect;
GetClientRect(&rect);
int nWidth=rect.Width();
int nHeight=rect.Height();
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(0,200);
MemDC.LineTo(500,300);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
//把前面的pOldBit选回来.在删除MemBitmap之前要先从设备中移除它
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MemDC.DeleteDC();

供楼主参考
fengbingchun 2010-07-10
  • 打赏
  • 举报
回复
我也用双缓冲解决过拖拉图像时闪烁问题,效果不错,其他方法没有用过,应该还有其他实现的方法
ackol_love 2010-07-07
  • 打赏
  • 举报
回复
楼上所说的在另外一张画布上画是指先建立一个兼容DC是吧。那在兼容DC上的画法是不是跟直接在显示DC上画是一样的。能不能写几句代码出来呢?还有,是不是窗口的重绘都使用双缓存会比较好,双缓存是解决闪烁问题比较好的方法是吗?
HoBoss 2010-07-06
  • 打赏
  • 举报
回复 2
双缓存的意思是这样的,
我们画图时通常是一步一步的画,比如画个人,画头,画身体,画四肢。
1. 如果我们不用双缓存直接画在显示的给DC上,那么会闪动,引起闪的原因实际上是,头,身体,四肢,不是同时画出来的。而是在很短的时间内一部分一部分的画出来的。
2. 用双缓存。我们先在另外一张画布上(内存DC),把头,身体,四肢,一步一步的画好。然后把这张画布一次画到需要显示的DC上。
xiuxianshen 2010-07-06
  • 打赏
  • 举报
回复
双缓冲例子确实很多,网上随便找找吧
Eleven 2010-07-06
  • 打赏
  • 举报
回复
双缓冲绘图的例子很多啊,MSDN上也有例子啊。。。

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧