-1

我想创建一个小实用程序“ColorPic”,下面是它的图片。

事实上,我可以得到光标所在像素的 RGB。

但我想创建一个窗口,将屏幕的一部分(光标附近)“打印”到这个窗口中。

最重要的是我需要一个放大和缩小的选项,这意味着我可以用 4x4、8x8、16x16 或 32x32 矩形来表示一个像素...

我知道有一个 SetPixel 函数,但这不是我想要的。

是否有一个非常有效的功能来做到这一点,比如“PrintScreen”(并且可以指定一个矩形作为参数)?非常高效,我的意思是当一个鼠标移动时,该功能可以非常快速地刷新窗口并且不会占用太多系统资源。

在此处输入图像描述s

4

1 回答 1

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

于 2012-08-31T18:37:01.347 回答