2 xt jat xt_jat 于 2014.04.25 17:11 提问

图形移动不平滑的问题,请求帮助
gdi

我用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 ;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!