Как конвертировать байты растрового изображения в x, y расположение пикселей? - PullRequest
0 голосов
/ 25 мая 2010

У меня есть программа win32, которая создает растровый снимок экрана. Я пытаюсь выяснить координаты x и y bmBits. Ниже приведен код, который у меня есть:

UINT32 nScreenX = GetSystemMetrics(SM_CXSCREEN); </p> <pre><code>UINT32 nScreenY = GetSystemMetrics(SM_CYSCREEN); HDC hdc = GetDC(NULL); HDC hdcScreen = CreateCompatibleDC(hdc); HBITMAP hbmpScreen = CreateDIBSection( hdcDesk, ( BITMAPINFO* )&bitmapInfo.bmiHeader,DIB_RGB_COLORS, &bitmapDataPtr, NULL, 0 ); SelectObject(hdcScreen, hbmpScreen); BitBlt(hdcScreen, 0, 0, nScreenX , nScreenY , hdc, 0, 0, SRCCOPY); ReleaseDC(NULL, hdc); BITMAP bmpScreen; GetObject(hbmpScreen, sizeof(bmpScreen), &bmpScreen); DWORD *pScreenPixels = (DWORD*)bmpScreen.bmBits, UINT32 x = 0; UINT32 y = 0; UINT32 nCntPixels = nScreenX * nScreenY; for(int n = 0; n < nCntPixels; n++) { x = n % nScreenX; y = n / nScreenX; //do stuff with the x and y vals }

Код кажется мне правильным, но когда я использую этот код, значения x и y оказываются выключенными. Где начинается первый пиксель bmBits? Когда x и y равны 0. Это верхний левый, нижний левый, нижний правый или верхний правый?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Первый пиксель, как правило, расположен слева внизу, хотя он может быть слева вверху, если высота указана как отрицательное число.

Линии развертки организованы слева направо. Обратите внимание, что линии сканирования дополняются до границ DWORD, поэтому «шаг» (расстояние от одной строки сканирования до следующей) может быть немного больше, чем фактическая ширина линии.

0 голосов
/ 25 мая 2010

Где начинается первый пиксель bmBits? Когда x и y равны 0. Это верхний левый, нижний левый, нижний правый или верхний правый?

Чтобы ответить на этот вопрос, вы можете создать изображение с уникальными цветами в каждом углу изображения. Оттуда просто запросите первый пиксель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...