У меня есть программа 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. Это верхний левый, нижний левый, нижний правый или верхний правый?
Спасибо.