-
July 31st, 2010, 03:59 PM
#1
GetDIBits returning senseless rgb values
Ok, im trying with GetDIBits but i cant make it work.
It always returns senseless values.
I think im missing the purpose of HDC here. Can someone explain this please? I mean, what's it for???
Note:
1) The image is a screenshot which i take just before running the code by pressing 'PrtScreen' button on the keyboard.
2) GetDIBits scans line 500 which, since im on a resolution of 1280x1024, is approximately in the middle of the screen.
3) Color depth is 32bits.
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
HBITMAP hBitmap;
if (OpenClipboard(NULL))
{
hBitmap = (HBITMAP)GetClipboardData(CF_DIB);
if (hBitmap == NULL)
{
cout << "Failed to get the clipboard data.";
return 0;
}
}
else
{
cout << "Failed to open the clipboard!";
return 0;
}
HDC hdc=CreateCompatibleDC(NULL);
BITMAPINFO bmi;
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = 1280;
bmi.bmiHeader.biHeight = 1;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = 0;
bmi.bmiHeader.biXPelsPerMeter = 0;
bmi.bmiHeader.biYPelsPerMeter = 0;
bmi.bmiHeader.biClrUsed = 0;
bmi.bmiHeader.biClrImportant = 0;
BYTE scanned[4*1280];
int returnValue = GetDIBits(hdc,hBitmap,500,1,scanned,&bmi,DIB_RGB_COLORS);
int r = scanned[2401];
int g = scanned[2402];
int b = scanned[2403];
cout << "returnValue = " << returnValue << "\n";
cout << "r = " << r << "\n";
cout << "g = " << g << "\n";
cout << "b = " << b << "\n";
CloseClipboard();
return 0;
}
-
August 11th, 2010, 06:10 PM
#2
Re: GetDIBits returning senseless rgb values
Why do you need to call GetDIBits()? Your bitmap RGB values are returned to you when you call GetClipboardData(CF_DIB);
CF_DIB = A memory object containing a BITMAPINFO structure followed by the bitmap bits.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|