据我所知,派生的CStatic控件中的My OnPaint()方法应该是切割比控件更大的绘图部分。 但它没有这样做。
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 :(得分:0)
取决于方法的定义。
OnPaint实际上不是一种方法;它是一个静态成员函数,用于通过将其映射到消息映射数组中来处理WM_PAINT消息。
对于C ++,我个人更喜欢将其称为成员函数以便清晰。
您可以使用ON_MESSAGE宏创建自己的处理程序,并根据需要调用它。 代码片段并没有多说,因为它没有显示绘图(绘画)的代码。您应该包含实际执行痛苦的代码。
如果您可以附上展示您问题的项目,那将是最好的。
您是否尝试绘制尺寸大于窗口的简单位图?
答案 1 :(得分:0)
@JohnCz现在知道了。
CDC* pDC = GetDC();
CRect rClient();
GetClientRect(rClient);
CRgn ClipRgn;
if (ClipRgn.CreateRectRgnIndirect(&rClient))
{
pDC->SelectClipRgn(&ClipRgn);
}
// Drawing content
pDC->SelectClipRgn(NULL);
ReleaseDC(pDC);
感谢您的回答