我现在遇到一个贴图的问题
我采用的是CScrollView视图,使用了MM_ANISOTROPIC映射模式,文字输出正常,缩放正常,矩形等手工绘制的图形输出正常,但是CBitmap图形不能输出,我测试过MM_TEXT映射模式输出正常到底那里设置错误,导致不能正常输出呢(一片空白)//输出图像前我已经设置并初始化MM_ANISOTROPIC映射模式
OnPrepareDC(pDC);
...void DrawBitmap(CDC* pDC, CRect& logicRect)
{
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_pBitmap); //已经定义并加载过图像的CBitmap* m_pBitmap BITMAP bm;
m_pBitmap->GetBitmap(&bm);
CSize bmpSize(bm.bmWidth, bm.bmHeight);
pDC->DPtoLP(&bmpSize);
int oldDC = pDC->SaveDC();
pDC->StretchBlt(logicRect.left, logicRect.top, logicRect.Width(), logicRect.Height(),
&memDC, 0, 0, bmpSize.cx, bmpSize.cy, SRCCOPY); //因为MM_TEXT映射模式下正常所以我尝试改用下面的代码,结果第一页能显示,但是稍动滚动条显示又异常
//可能重置滚动条后会正常,我没有继续测试因为这个方法不太适合我的需求
//int oldMode = pDC->SetMapMode(MM_TEXT);
//pDC->LPtoDP(&logicRect);
//pDC->LPtoDP(&bmpSize);
//pDC->StretchBlt(logicRect.left, logicRect.top, logicRect.Width(), logicRect.Height(),
// &memDC, 0, 0, bmpSize.cx, bmpSize.cy, SRCCOPY);
//pDC->SetMapMode(oldMode); pDC->RestoreDC(oldDC);
}MM_ANISOTROPICBitBlt
我采用的是CScrollView视图,使用了MM_ANISOTROPIC映射模式,文字输出正常,缩放正常,矩形等手工绘制的图形输出正常,但是CBitmap图形不能输出,我测试过MM_TEXT映射模式输出正常到底那里设置错误,导致不能正常输出呢(一片空白)//输出图像前我已经设置并初始化MM_ANISOTROPIC映射模式
OnPrepareDC(pDC);
...void DrawBitmap(CDC* pDC, CRect& logicRect)
{
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_pBitmap); //已经定义并加载过图像的CBitmap* m_pBitmap BITMAP bm;
m_pBitmap->GetBitmap(&bm);
CSize bmpSize(bm.bmWidth, bm.bmHeight);
pDC->DPtoLP(&bmpSize);
int oldDC = pDC->SaveDC();
pDC->StretchBlt(logicRect.left, logicRect.top, logicRect.Width(), logicRect.Height(),
&memDC, 0, 0, bmpSize.cx, bmpSize.cy, SRCCOPY); //因为MM_TEXT映射模式下正常所以我尝试改用下面的代码,结果第一页能显示,但是稍动滚动条显示又异常
//可能重置滚动条后会正常,我没有继续测试因为这个方法不太适合我的需求
//int oldMode = pDC->SetMapMode(MM_TEXT);
//pDC->LPtoDP(&logicRect);
//pDC->LPtoDP(&bmpSize);
//pDC->StretchBlt(logicRect.left, logicRect.top, logicRect.Width(), logicRect.Height(),
// &memDC, 0, 0, bmpSize.cx, bmpSize.cy, SRCCOPY);
//pDC->SetMapMode(oldMode); pDC->RestoreDC(oldDC);
}MM_ANISOTROPICBitBlt
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货