MSDN Page on GetHdc
Я думаю, что это то, что вы ищете. Вам нужно будет получить HDC, а затем использовать вызовы GDI для использования SetPixel. Обратите внимание, что COLORREF в GDI является DWORD, сохраняющим цвет BGR. Нет альфа-канала, и это не RGB, как структура цвета GDI +.
Это небольшой фрагмент кода, который я написал для выполнения той же задачи:
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);
}
...
}
Я сделал контроль, который содержит некоторые очень хорошие научные графики (с добавленными возможностями, которые мне недоступны в любых коммерческих элементах управления). Я могу построить точку данных с и X или + или небольшую коробку. Но для несущественных данных я просто хочу один пиксель. –