OnInitDialog加入了下面的代码:
// TODO: Add extra initialization here
CRect rect;
GetClientRect(&rect);
CDC *pDC = GetDC();
//内存DC和位图都是成员变量
m_dcMem.CreateCompatibleDC(pDC);
m_bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
m_dcMem.SelectObject(&m_bmp);
OnPaint()代码如下:
CRect rect;
GetClientRect(&rect);
CDC *pDC = GetDC();
//设置内存DC的映射模式
m_dcMem.SetMapMode(MM_ANISOTROPIC);
m_dcMem.SetWindowExt(rect.Width(), -rect.Height());
m_dcMem.SetViewportExt(rect.Width(), rect.Height());
m_dcMem.SetViewportOrg(rect.Width()/2, rect.Height()/2);
//画图,一个椭圆一条直线
CRect rectEllipse(-rect.Width()/2, -rect.Height()/2, rect.Width()/2, rect.Height()/2);
m_dcMem.Ellipse(&rectEllipse);
m_dcMem.MoveTo(-rect.Width()/2-40, -rect.Height()/2-10);
m_dcMem.LineTo(rect.Width(), rect.Height());
//客户区DC的映射模式
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportExt(rect.Width(), rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
pDC->BitBlt(0, 0, rect.right, rect.bottom, &m_dcMem, 0, 0, SRCCOPY);
Invalidate(FALSE);
ReleaseDC(pDC);
运行结果如下:
,
为什么只有第一象限有图像,