【高分求解】如何先改变坐标的映射模式 然后使用内存DC进行作图 最后进行显示啊?【顶者有分】
【高分求解】如何先改变坐标的映射模式 然后使用内存DC进行作图 最后进行显示啊?【顶者有分】
我现在做了一个 但是就是显示不出来。可能是坐标转换的问题
CClientDC dc 和 CDC memDC ,这两个DC是不是都需要进行坐标转换的操作啊?
代码如下:
void CTestSetMapModeView::OnLButtonDown(UINT nFlags, CPoint point)
{
CRect rect;
GetClientRect(rect);
CClientDC dc (this);
dc.SetMapMode (MM_ISOTROPIC);
dc.SetWindowExt (rect.Width (), -rect.Height ());
dc.SetViewportExt (rect.Width (), -rect.Height ());
dc.SetViewportOrg (point);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memDC.SetMapMode(MM_ISOTROPIC);
memDC.SetWindowExt(rect.Width(), -rect.Height());
memDC.SetViewportExt(rect.Width(), -rect.Height());
memDC.SetViewportOrg (point);
CBitmap bitmap,*pOldBitmap;
bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
pOldBitmap=memDC.SelectObject(&bitmap);
memDC.BitBlt(-rect.Width()/2,rect.Height()/2,rect.Width(),rect.Height(),&dc,-rect.Width()/2,rect.Height()/2,SRCCOPY);
//以下是画一些图形的命令
memDC.Ellipse(-50,50,50,-50);
memDC.Ellipse(-10,20,10,-20);
dc.BitBlt(-rect.Width()/2,rect.Height()/2,rect.Width(),rect.Height(),&memDC,-rect.Width()/2,rect.Height()/2,SRCCOPY );
memDC.SelectObject(pOldBitmap);
bitmap.DeleteObject();
CView::OnLButtonDown(nFlags, point);
}