【问题标题】:GDI is drawing outside of controlGDI 的绘图不受控制
【发布时间】:2012-07-06 21:49:20
【问题描述】:

我正在编写 MFC 应用程序。我在窗体对话框上创建了一个 CStatic 派生控件,以便在启动程序时直接看到窗体。我现在使用派生类中的 OnPaint() 方法在此控件中绘图。到目前为止,一切正常。 然而,奇怪的是,这些图纸并没有被剪裁到控件之外。相反,如果我画了非常大的东西,整个形式都会被画出来。在我的理解中,应该只绘制控件。

提前致谢 安德烈亚斯 D.

【问题讨论】:

    标签: mfc controls gdi


    【解决方案1】:

    @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
    【解决方案2】:

    检查您的控件是否使用“未剪辑的设备上下文”选项。您可以通过获取控制标志来检查这一点。 您也可以调用 IsOptimizedDraw(),如果返回 true,则您的绘图可以在控件之外绘制。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 2011-08-29
      • 2021-11-09
      • 2014-08-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多