如何从桌面中获取一块区域,然后计算各种颜色的个数

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:34:28
我是新手来的!请问下怎样从桌面中获取一块区域的图形,然后的到颜色数据!和保存该图片!说详细点,谢谢了!

//GrabScreenToBitmap.h
#ifndef GRABSCREENTOBITMAP_H
#define GRABSCREENTOBITMAP_H

HBITMAP GrabScrToBmp(LPRECT lpRect);

BOOL CopyBmpToClipBoard(const HBITMAP hBmp);

BOOL SaveBmpToFile(const HBITMAP hBmp, const LPCSTR lpFileName);

#endif

//GrabScreenToBitmap.cpp
HBITMAP GrabScrToBmp(LPRECT lpRect) //lpRect 代表选定区域
{
if (IsRectEmpty(lpRect))
{
return NULL;
}

HDC hScrDC; // 屏幕设备描述表句柄
HDC hMemDC; //内存设备描述表句柄
HBITMAP hBmp; // 位图句柄
HBITMAP hOldBmp;
int nX, nY, nX2, nY2; // 选定区域坐标
int nWidth, nHeight; // 位图宽度和高度
int xScrn, yScrn; // 屏幕分辨率

hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
hMemDC = CreateCompatibleDC(hScrDC);

nX = lpRect->left;
nY = lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;

xScrn = GetDeviceCaps(hScrDC, HORZRES);
ySc