我正在尝试将 BitBlt 从 HBITMAP 转换为 GDI+ 位图。我试过这个,但没有任何反应:
Bitmap Buffer = New Bitmap(608, 392)
Graphics BufferGraphics = Graphics.FromImage(Buffer);
IntPtr hBufferDC = BufferGraphics.GetHdc();
...
BitBlt(hBufferDC, x, y, width, height, hInputDC, 0, 0, SRCCOPY);
编辑:显然,如果我获得了 hDC,然后再将它与 BitBlt 一起使用,它就无法工作。我需要确保 hDC 仍然有效。这是解决方案:
Bitmap Buffer = New Bitmap(608, 392)
Graphics BufferGraphics = Graphics.FromImage(Buffer);
...
IntPtr hBufferDC = BufferGraphics.GetHdc();
BitBlt(hBufferDC, x, y, width, height, hInputDC, 0, 0, SRCCOPY);
BufferGraphics.ReleaseHdc(hBufferDC);
有谁知道为什么这个改变是必要的?为什么使用第一个示例中较早获得的 hDC 可能不起作用?