У меня есть массив значений RGB, размер которых, как я могу гарантировать, соответствует клиентской области окна на экране.
Какие самые простые и быстрые способы получить содержимое моего массива на экране в ответ на сообщение WM_PAINT с помощью Win32 API?
Если это упростит / ускорит, мы можем предположить, что это 32-битный дисплей, а каждый элемент массива 32-битный.





Использовать BitBlt
Предпочитайте SetDIBitsToDevice (), но вы используете «HDC hdc = GetDC (hwnd); HDC hdcBitmap = CreateCompatableDC (hdc); ReleaseDC (hdc); DeleteObject (SelectObject (hdcBitmap, hBitmap));» в вашем init. DeleteObject () освобождает растровое изображение по умолчанию 1x1 @ 1bpp.
Если у вас есть полный контроль над форматом резервной копии, используйте формат DIB и фиктивную структуру BITMAPINFO. Затем используйте SetDIBitsToDevice для копирования на DC.
Помните об особенностях формата DIB - каждая строка должна быть расширена до кратного 4 байта, первая строка буфера - это нижняя строка изображения, а порядок байтов - синий, зеленый, красный.
Полагаю, я действительно спрашиваю, как получить DC, который я могу скопировать из моего массива, поскольку BitBlt нужен исходный DC