Page MSDN sur GetHdc
Je pense que c'est ce que vous recherchez. Vous devrez obtenir le HDC, puis utiliser les appels GDI pour utiliser SetPixel. Notez qu'un COLORREF dans GDI est un DWORD stockant une couleur BGR. Il n'y a pas de canal alpha et ce n'est pas RVB comme la structure Color de GDI +.
Voici une petite section de code que j'ai écrite pour accomplir la même tâche:
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);
}
...
}