我正在编写一个MFC应用程序。我在Form对话框中创建了一个CStatic派生控件,以便在启动程序时直接看到表单。我现在在派生类中使用OnPaint()方法绘制该控件。到目前为止,一切正常。然而,奇怪的是,图纸并未在控件之外被剪切掉。相反,如果我画出真正大的东西,整个表格就会被绘制出来。根据我的理解,只有控制权应该绘制。GDI正在控制之外
在此先感谢 安德烈亚斯·
我正在编写一个MFC应用程序。我在Form对话框中创建了一个CStatic派生控件,以便在启动程序时直接看到表单。我现在在派生类中使用OnPaint()方法绘制该控件。到目前为止,一切正常。然而,奇怪的是,图纸并未在控件之外被剪切掉。相反,如果我画出真正大的东西,整个表格就会被绘制出来。根据我的理解,只有控制权应该绘制。GDI正在控制之外
在此先感谢 安德烈亚斯·
检查你的控制是使用了“正常曝光设备上下文”选项。你可以通过获取控制标志来检查。 您也可以调用IsOptimizedDraw(),如果返回true,那么您的绘图可以在控件之外绘制。
@dlb明白了。
CDC* pDC = GetDC();
CRect rClient();
GetClientRect(rClient);
CRgn ClipRgn;
if (ClipRgn.CreateRectRgnIndirect(&rClient))
{
pDC->SelectClipRgn(&ClipRgn);
}
// Drawing content
pDC->SelectClipRgn(NULL);
ReleaseDC(pDC);
谢谢您的回答
虽然没有上面提到的,但我的问题 “CDC * pDC的=的GetDC();”解决我的问题...谢谢@Andreas –