HBITMAP LoadBMP(void)
{
HWND hwnd = GetDesktopWindow();
LPVOID lpDIBits = 0;
HANDLE hFile = CreateFile("image.bmp", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) return NULL;
BITMAPFILEHEADER bmFileHeader;
LPBYTE pByte = 0;
DWORD dwReadBytes;
ReadFile(hFile, &bmFileHeader, sizeof(BITMAPFILEHEADER), &dwReadBytes, NULL);
int iBitmapInfoSize = bmFileHeader.bfOffBits - sizeof(BITMAPFILEHEADER);
pByte = new BYTE[iBitmapInfoSize];
ReadFile(hFile, pByte, iBitmapInfoSize, &dwReadBytes, NULL);
HDC hdc = GetDC(hwnd);
LPBITMAPINFO lpBitmapInfo = (LPBITMAPINFO) pByte;
HBITMAP hDib = CreateDIBSection(hdc, lpBitmapInfo, DIB_RGB_COLORS, &lpDIBits, NULL, 0);
ReadFile(hFile, lpDIBits, lpBitmapInfo->bmiHeader.biSizeImage, &dwReadBytes, NULL);
static BYTE R;
static BYTE G;
static BYTE B;
BYTE* pTemp = (BYTE*)lpDIBits + (lpBitmapInfo->bmiHeader.biHeight-1) * lpBitmapInfo->bmiHeader.biWidth;
DWORD k = 0;
for(int y = (lpBitmapInfo->bmiHeader.biHeight - 1) * lpBitmapInfo->bmiHeader.biWidth ; y>0 ; y--)
{
for(int x = 0; x<lpBitmapInfo->bmiHeader.biWidth; x++)
{
R = *(pTemp + k+2);
G = *(pTemp + k+1);
B = *(pTemp + k);
k+=3;
if(*pTemp == 102 && *(pTemp+1) == 128 && *(pTemp +2) ==230)
{
if(*(pTemp+3) == 0 && *(pTemp+4) == 255 && *(pTemp +5) == 80)
{
//*pTemp
}
}
}
}
SPRITE 툴 비스무리한거 만드는중인데
빨간줄이 비트맵 픽셀에서 RGB값 얻어오고 비교하는건데
Y좌표계 바껴서 다르게 FOR문 돌려야한다는데 어케돌리죠
Win32API라니 망측해라 - return 0;