-

- 加为好友
- 发送私信
- 在线聊天
-
flyowen982
- 等级:

- 可用分等级:
- 总技术专家分:
- 总技术专家分排名:
- 揭帖率:
|
| 发表于:2008-08-21 17:09:22 楼主 |
大家好,有个问题想请教下。 我在picture控件(属性为Rectangle)中插入一个背景图片后,在上面实现了点的移动(使用了OnTimer()和RedrawWindow()函数)。可是移动了一段时间,好像RedrawWindow()不起作用了,点的移动轨迹都出现了,根本不能刷新屏幕。(另外我试过,如果不插入背景图片,就比较正常,可以实现点的移动,不会出现移动的轨迹;一旦插入背景图片,移动一段时间后,RedrawWindow()就失效了) 其中,我是这样插入背景图片的:我继承了VC的picture控件类(CPaintStatic),重写了OnPaint()函数,把背景图片导入了(自动适应控件的大小),然后在按钮中调用Invalidate()来触发此函数,代码如下: void CPaintStatic::OnPaint() { // TODO: Add your message handler code here if (paintFlag==true) //paintFlag是我设置的标志 { CPaintDC dc(this); // device context for painting HBITMAP hbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),fileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE); BITMAP bm; GetObject(hbmp,sizeof(bm),&bm); dc.SetStretchBltMode(HALFTONE); dc.StretchBlt(rc->left,rc->top,rc->Width(),rc->Height(),memDc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); } else { CStatic::OnPaint(); } // Do not call CStatic::OnPaint() for painting messages } |
|
|
|
20
修改
删除
举报
引用
回复
| |