GetHdc'de MSDN Sayfası
Sanırım aradığınız şey bu. SetPixel'i kullanmak için HDC'yi almanız ve ardından GDI çağrılarını kullanmanız gerekecektir. GDI'daki bir COLORREF'in, BGR rengini depolayan bir DWORD olduğuna dikkat edin. Alfa kanalı yoktur ve GDI + 'nın Renk yapısı gibi RGB değildir.
Bu, aynı görevi gerçekleştirmek için yazdığım küçük bir kod bölümü:
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);
uint colorRef = (uint)((pixelColor.B << 16) | (pixelColor.G << 8) | (pixelColor.R));
GDI.SetPixel(hdc, x, y, colorRef);
}
}
e.Graphics.ReleaseHdc(hdc);
}
...
}