毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

怎么消除连续贴图后产生的痕迹

更新时间:2012-11-29:  来源:毕业论文

DWORD WINAPI play(LPVOID lpParam) {     CMapTestDlg *c=(CMapTestDlg*)lpParam;     HWND hWnd= c->GetSafeHwnd();     c->hdc = ::GetDC(hWnd);       //mdc = CreateCompatibleDC(hdc);       c->bufdc = CreateCompatibleDC(c->hdc);      CBitmap bTank;     bTank.LoadBitmap(IDB_BITMAP1);     c->bird=HBITMAP(bTank);      SelectObject(c->bufdc,c->bird);     while(true)     {       //BitBlt(mdc,10,0,50,50,bufdc,0,0,SRCCOPY);     BitBlt(c->hdc,c->x,c->y,50,50,c->bufdc,0,0,SRCCOPY);     ::Sleep(1);     }     return TRUE; }

BOOL CMapTestDlg::PreTranslateMessage(MSG* pMsg) {                  if (pMsg-> message == WM_KEYDOWN)      {          if(pMsg-> wParam== VK_UP)          {              y-=10;          }          if(pMsg-> wParam== VK_DOWN)          {              y+=10;          }          if(pMsg-> wParam== VK_LEFT)          {              x-=10;;          }          if(pMsg-> wParam== VK_RIGHT)          {              x+=10;          }        }     return CDialog::PreTranslateMessage(pMsg); }


线程中每Sleep(1)发送一个消息到UI线程,在UI线程中修改变量的值,然后调用InvalidateRect刷新,OnPaint函数中绘制图形即可。建议用双缓冲绘图。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。