Winforms 如何通过句柄获取OpenGL绘制的WinForm控件的后台缓冲区?

Winforms 如何通过句柄获取OpenGL绘制的WinForm控件的后台缓冲区?,winforms,opengl,Winforms,Opengl,我画了OpenGL窗口。我通过GetDC(hwnd)获取设备上下文。hwnd是C#winform句柄(所有工程)。如何获取表单的背景缓冲区?我试过这个代码(我在按下按钮时称之为): 但它拯救了黑广场。如何解决? 谢谢。一般来说,只有OpenGL命令才能将OpenGL渲染结果显示到窗口。您不能使用Win32设备上下文函数执行此操作。您在这里到底想做什么?使用OpenGL渲染窗体或保存图像?OpenGL绘制在未被控制的C++中。我转移到C++ WiFrm控件句柄来为OpenGL OUTPT设置设备上

我画了OpenGL窗口。我通过GetDC(hwnd)获取设备上下文。hwnd是C#winform句柄(所有工程)。如何获取表单的背景缓冲区?我试过这个代码(我在按下按钮时称之为):

但它拯救了黑广场。如何解决?
谢谢。

一般来说,只有OpenGL命令才能将OpenGL渲染结果显示到窗口。您不能使用Win32设备上下文函数执行此操作。

您在这里到底想做什么?使用OpenGL渲染窗体或保存图像?OpenGL绘制在未被控制的C++中。我转移到C++ WiFrm控件句柄来为OpenGL OUTPT设置设备上下文。我在winform面板中看到OpenGL输出,但我想通过C#获得一个屏幕截图。
        System.Drawing.Bitmap bm;
        System.Drawing.Rectangle rec = new System.Drawing.Rectangle(10, 10, 1100, 1100);

        System.Drawing.Graphics gr = this.CreateGraphics();
        gr.Clip = new Region(rec);
        gr.Clear(Color.Yellow);

        bm = new Bitmap(rec.Width, rec.Height, gr);
        bm.Save("C:\\222.bmp", System.Drawing.Imaging.ImageFormat.Bmp);