Trang MSDN trên GetHdc
Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm. Bạn sẽ cần lấy HDC và sau đó sử dụng lệnh gọi GDI để sử dụng SetPixel. Lưu ý rằng COLORREF trong GDI là DWORD lưu trữ màu BGR. Không có kênh alpha và nó không phải là RGB như cấu trúc Màu của GDI +.
Đây là một đoạn mã nhỏ mà tôi đã viết để hoàn thành nhiệm vụ tương tự:
public class GDI
{
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
internal static extern bool SetPixel(IntPtr hdc, int X, int Y, uint crColor);
}
{
...
private void OnPanel_Paint(object sender, PaintEventArgs e)
{
int renderWidth = GetRenderWidth();
int renderHeight = GetRenderHeight();
IntPtr hdc = e.Graphics.GetHdc();
for (int y = 0; y < renderHeight; y++)
{
for (int x = 0; x < renderWidth; x++)
{
Color pixelColor = GetPixelColor(x, y);
// NOTE: GDI colors are BGR, not ARGB.
uint colorRef = (uint)((pixelColor.B << 16) | (pixelColor.G << 8) | (pixelColor.R));
GDI.SetPixel(hdc, x, y, colorRef);
}
}
e.Graphics.ReleaseHdc(hdc);
}
...
}