如何在滚动以后,往CScrollView的DC上贴图
梧桐168 2003-09-08 09:37:10 我在鼠标绘图时候用脏矩形技术,先在自定义的DC中绘图,然后往CScrollView的DC中贴图不滚动或者少许滚动都不存在问题,可是滚动距离较大时,发现我在自定义的DC中绘图无效,而且往CScrollView的DC中贴图也无效,不知什么原因,还望高手多多指教。代码如下:
{
ASSERT_VALID( pDC );
CCompatibleDC dcResult(pDC);
m_pcView->OnPrepareDC( pDC );
dcResult.SelectClipRgn( NULL );
CSelBitmap cResultBmp(&dcResult, pDC, rc.Width(), rc.Height());
AddjustRect( rc );
// 将移动图形对象之前的屏幕内容拷贝到dcResult中
CRect rc1 = rc;
m_pcView->DocToClient( rc1 );
CScreenManager::Instance().CopyTo( 0, 0, rc1.Width(), rc1.Height (), &dcResult, rc1.left, rc1.top );
// 计算绘制当前移动的图形对象在dcResult的位置
CPoint pt = -rc.TopLeft();
// 绘制当前移动的图形对象
CShapeListHelper::DrawShapes( m_cShapes, &dcResult, pt );
// 刷新屏幕
VERIFY( pDC->BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), &dcResult, 0, 0, SRCCOPY) );
}