关于StretchBlt显示有关问题

关于StretchBlt显示问题
我在dialog的OnPaint事件里,要显示图形,m_MemDC是根据dialog的dc创建的兼容DC,但dialog的区域却比memDC大很多,通过StretchBlt显示m_MemDC时,图像点之间的间隔被拉大,图像失真了。怎么办才能让m_MemDC显示到一个更大的区域,但图像点之间未知却不变化呢?

void CDataDiplay::OnPaint() 
{
     CPaintDC dc(this); 
   GetClientRect(m_ClientRect);
    dc.StretchBlt(0,20,m_ClientRect.Width(),m_ClientRect.Height()-40,&m_pFileHandle->m_MemDC,0,0,m_ClientRect.Width()*280/(m_ClientRect.Height()-40),280,SRCCOPY);
}

m_pFileHandle->m_MemDC是在别处用CreateCompatibleDC创建的与CDataDiplay兼容的DC。用BitBlt显示m_MemDC可以发现m_MemDC的区域比CDataDiplay的显示区域小很多。
------解决方案--------------------
SetStretchBltMode(HALFTONE);