我有代码如下:
void CEngTestView::OnLButtonDown(UINT nFlags, CPoint point) 
{
CDC *pDC = GetDC();
int nOldMapMode = pDC->SetMapMode(MM_LOMETRIC);

CRect rect;
GetClientRect(rect);
pDC->DPtoLP(rect);
CPoint pntOldWndOrg = pDC->SetWindowOrg(rect.left, -rect.bottom);

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
BITMAP imagedata;
bmp.GetBitmap(&imagedata); CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap *pOldBitmap = memDC.SelectObject(&bmp); CRgn rgn;
CRect rc(50, 50, imagedata.bmWidth + 50, imagedata.bmHeight + 50);
pDC->LPtoDP(&rc);
rgn.CreateRoundRectRgn(rc.left, rc.top, rc.right, rc.bottom, 30, 30);
pDC->SelectClipRgn(&rgn, RGN_DIFF); pDC->BitBlt(50, 50, imagedata.bmWidth, imagedata.bmHeight, 
&memDC, 0, 0, SRCCOPY);

memDC.SelectObject(pOldBitmap);
pDC->SetWindowOrg(pntOldWndOrg);
pDC->SetMapMode(nOldMapMode);

ReleaseDC(pDC);
}
原想rgn应该与图片在外边界上完全重合,然而结果总是右边和下边少裁剪1到2个象素。哪位大侠可以帮忙看看啊!