我在基于对话框类的,上面,帖了好多图片,但是移动的时候,不能即使更新是怎么会事呀????

wxpwxp 2005-12-30 10:28:33

我在对话框上影射的函数;BOOL OnEraseBkgnd(CDC* pDC)
里面通过函数:CImgelist::Draw(pDC,pMan2->typeNum,ppoint,ILD_TRANSPARENT);画了很多图片;
我想通过鼠标移动,改变ppoint的值,来重绘图片,来达到移动图片的目的,但是用鼠标移动的时候,图片,实际图片移动了,在屏幕上看不到,是因为没有刷新,我用Invalidate()函数,虽然刷新,结果就是不停闪。。要是用哪个只刷新一个矩形,你鼠标移动快的话,就出现移动轨迹,也是刷新的问题,用什么updatewindow,什么的都没用,
大家给看看,应该怎么办呀。。???????/
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxpwxp 2006-01-06
  • 打赏
  • 举报
回复
????????????????????????????????????????????????????????????????
wxpwxp 2006-01-04
  • 打赏
  • 举报
回复
上面说的使用双缓冲,背景好象是bitmap,我想用我本来画的背景,也就是要透明的怎么弄呀。
皮皮鲁 2006-01-02
  • 打赏
  • 举报
回复
mark
zephyr007 2006-01-02
  • 打赏
  • 举报
回复
调用Invalidate()进行强制刷新
DentistryDoctor 2006-01-02
  • 打赏
  • 举报
回复
重绘应该在响应WM_PAINT(OnPaint)时进行,同时应该用双缓冲以减少闪烁。
蒋晟 2005-12-30
  • 打赏
  • 举报
回复
去看MFC的DrawCLI示例
wxpwxp 2005-12-30
  • 打赏
  • 举报
回复
双缓冲,,听过,没用过,,小三,你说的哪个函数,在基于对话框下,没哪个cdc的参数,
我在OnEraseBkgnd(CDC* pDC),中用你那段程序也没效果,,能不能给说下我那为什么不行呀,那里错了,应该用什么样的方法呀。
lixiaosan 2005-12-30
  • 打赏
  • 举报
回复
在dc中作图后,画出来

void CXXXDlg::OnPaint(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);

CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
//也可以通过LoadImage导入图片,然后画出
CBitmap* pOldBitmap;
pOldBitmap = dc.SelectObject(&bitmap);

pDC->BitBlt(.....);

dc.SelectObject(pOldBitmap);
}

然后在OnEraseBkgnd(CDC* pDC)中直接返回TRUE
菜牛 2005-12-30
  • 打赏
  • 举报
回复
没听说过“双缓冲”么?

19,468

社区成员

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

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