簡體   English   中英

c / c ++將RGBQUAD數組分配給位圖

[英]c/c++ assign RGBQUAD array to a bitmap

我正在做一個程序,您在其中截取窗口的屏幕截圖,然后掃描該圖片的每個像素。 但是我在將RGBQUAD數組分配給拍攝的屏幕時遇到了問題。 每個像素都具有相同的RGB,即205。這是我的一段代碼:

RGBQUAD *pixel = malloc((ssWidth * ssHeight)* sizeof(RGBQUAD));
hdcScreen = GetDC(gameHandle);
hdc = CreateCompatibleDC(hdcScreen);
hBmp = CreateCompatibleBitmap(hdcScreen, ssWidth, ssHeight);
SelectObject(hdc, hBmp);

BitBlt(hdc, 0, 0, ssWidth, ssHeight, hdcScreen, xCenter, yCenter, SRCCOPY);

GetDIBits(hdc, hBmp, 0, ssHeight, pixel, &bmpInfo, DIB_RGB_COLORS);

int p = -1;

for(y_var = 0; y_var < ssWidth; y_var++)
{
    for(x_var = 0; x_var < ssHeight; x_var++)
    {
        if(ComparePixel(&pixel[++p]))
        {
            SetCursorPos(xCenter + x_var + 3, yCenter + y_var + 3);
        }
    }
}

bool ComparePixel(RGBQUAD *pixel)
{
    printf("%d, %d, %d\n"; pixel -> rgbRed, pixel -> rgbGreen, pixel -> rgbBlue);
    return false;
}

ComparePixel(RGBQUAD * pixel)函數僅檢查RGB值。 如何將RGBQUAD分配給屏幕截圖的位圖?

多個問題。

  1. RGBQUAD **pixel = malloc(...free(*pixel)似乎是問題。我想您要RGBQUAD *pixel = malloc((ssWidth * ssHeight)* sizeof(RGBQUAD)); (僅1 *

  2. 懷疑pixelsGetDIBits() S / B pixel

  3. 我想你想y_var = 0; (x_var = 0;也)

  4. ComparePixel()未定義,但我認為您想要更接近if(ComparePixel(pixel[x_var+(y_var*ssWidth)], the_pixel_to_compare_against))

  5. free(*pixel); s / b _在2個for循環之后,並且應該為free(pixel)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM