正如标题所说。 即使在派生类中使用CPaintDC,GDI绘图也不会被切断。 提前谢谢。
void CGraph::OnPaint ()
{
CPaintDC dc(this);
dc.SetViewportOrg (0, 400);
dc.SetMapMode(MM_ISOTROPIC);
dc.SetWindowExt(1000, 800);
dc.SetViewportExt(1000, -800);
// MessageBox(L"OnPaint");
ProcessData ();
DrawCoordinateSystem (&dc);
DrawGrid (&dc);
DrawGraph (&dc);
}
答案 0 :(得分:2)
那么,你的CGraph是从CStatic派生的,你展示的绘图代码是在CStatic控件之外绘制到它所在的对话框上的吗?这是不可能的,控制只能依靠自己。你确定控制力不比你想象的要大,而你认为失控的实际上并不是吗?使用spy ++选择你的cstatic,它会显示窗口的边框。
也许你所看到的是不正当的失效。尝试在控件上拖动另一个窗口,看看它是做什么的。
否则,限制绘图区域的方法是
答案 1 :(得分:1)
这是我解决问题的方法
CDC* pDC = GetDC();
CRect rClient(0,0,1000,800);
//GetClientRect(rClient);
CRgn ClipRgn;
if (ClipRgn.CreateRectRgnIndirect(&rClient))
{
pDC->SelectClipRgn(&ClipRgn);
}
pDC->SelectObject (PenBlack);
pDC->MoveTo (-leftMargin*zoomWidth, setPointsCorrected);
pDC->LineTo (1000*zoomWidth, setPointsCorrected);
pDC->SelectClipRgn(NULL);
ReleaseDC(pDC);