问题描述
- 图形移动不平滑的问题,请求帮助
-
我用MFC 框架,gdi画图, 已经使用了 双缓冲。下面是代码。
我用timer 没40ms 调用一次invalidate, 理想的情况下,横线是很平滑的从上往下移动。但现在的情况是 这个线一跳一跳的,不知道我哪里做错了,希望能得到帮助int ss = 0 ;
void CSmoothTestView::OnDraw(CDC* pDC)
{
CSmoothTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;// TODO: add draw code for native data here CRect rcClient ; GetClientRect(rcClient) ; CBitmap bitmap ; bitmap.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height()) ; CDC memScreenDC ; CBitmap* pOldScreenBmp ; memScreenDC.CreateCompatibleDC(pDC) ; pOldScreenBmp = memScreenDC.SelectObject(&bitmap) ; memScreenDC.FillSolidRect(0, 0, rcClient.Width(), rcClient.Height(), RGB(255, 255, 255)) ; memScreenDC.MoveTo(0, ss) ; memScreenDC.LineTo(rcClient.right, ss) ; pDC->BitBlt( 0, 0, rcClient.Width(), rcClient.Height(), &memScreenDC, 0, 0, SRCCOPY ) ; memScreenDC.SelectObject(pOldScreenBmp) ; if ( ss > rcClient.bottom ) { ss = 0 ; } ss += 2 ;
}
时间: 2024-10-10 16:07:10