在对话框上放置了一个picture控件,将一组坐标点显示在连成线显示在上面。为了防止置闪烁,现在内存里作图。 在默认映射模式下,很成功,但是改变坐标的映射模式后,很奇怪。
CRect rect;
CWnd* pWnd = GetDlgItem(IDC_STATIC);
pDC=pWnd->GetDC();
GetClientRect(&rect);
Graphics graphics(pDC->m_hDC);
graphics.SetSmoothingMode(SmoothingModeHighQuality); Pen redpen(Color(255,255,0,0));
redpen.SetWidth(3);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom);
pDC->SetViewportExt(rect.right,rect.bottom); pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(300,300); PointF points[]={PointF(0.0,0.0),PointF(100.5,100.5), PointF (50.0,300.0),PointF(100.0,300.0)};
graphics.DrawCurve(&redpen,points,4);
}
显示出来的是:原来的picture控件上什么也没有了,在picture控件上就什么也没有了。如果把设置原点的两句注释掉,控件上左上角出现一个小窗口,显示了一个小图。
到底是哪里的问题?
CRect rect;
CWnd* pWnd = GetDlgItem(IDC_STATIC);
pDC=pWnd->GetDC();
GetClientRect(&rect);
Graphics graphics(pDC->m_hDC);
graphics.SetSmoothingMode(SmoothingModeHighQuality); Pen redpen(Color(255,255,0,0));
redpen.SetWidth(3);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom);
pDC->SetViewportExt(rect.right,rect.bottom); pDC->SetWindowOrg(0,0);
pDC->SetWindowExt(300,300); PointF points[]={PointF(0.0,0.0),PointF(100.5,100.5), PointF (50.0,300.0),PointF(100.0,300.0)};
graphics.DrawCurve(&redpen,points,4);
}
显示出来的是:原来的picture控件上什么也没有了,在picture控件上就什么也没有了。如果把设置原点的两句注释掉,控件上左上角出现一个小窗口,显示了一个小图。
到底是哪里的问题?
我在网上查说二者可以混合使用。如果只是用GDI+,负数应该怎么表示?我也觉得GDI太麻烦了。