我想创建一个小实用程序'ColorPic',下面是它的图片。
事实上,我可以获得光标所在的像素的RGB。
但我想创建一个窗口,将“打印”部分屏幕(靠近光标)放入此窗口。
最重要的是我需要一个放大和缩小的选项,这意味着我可以通过4x4,8x8,16x16或32x32矩形来表示像素......
我知道有一个SetPixel函数,但这不是我想要的。
是否有一个非常有效的功能,像“PrintScreen”(并且可以指定一个矩形作为参数)?非常有效,我的意思是当一个移动鼠标时,该功能可以非常快速地刷新窗口,并且不会使用太多的系统资源。
Š
答案 0 :(得分:6)
我发现了这个:
HBITMAP MakePrintScreen()
{
HWND hWindow = GetDesktopWindow();
HDC hdcScreen = GetDC(hWindow);
RECT rect;
HBITMAP hbmC;
GetClientRect(hWindow,&rect);
if((hbmC = CreateCompatibleBitmap(hdcScreen,rect.right,rect.bottom)) != NULL)
{
HDC hdcC;
if((hdcC = CreateCompatibleDC(hdcScreen)) != NULL)
{
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcC,hbmC);
BitBlt(hdcC,0,0,rect.right,rect.bottom,hdcScreen,0,0,SRCCOPY);
SelectObject(hdcC,hbmOld);
DeleteDC(hdcC);
}
}
ReleaseDC(hWindow,hdcScreen);
return hbmC;
}
自:
http://forum.4programmers.net/C_i_C++/149036-WINAPI_Print_screen_przyslonietego_okna