需要具有打印屏幕功能的winapi功能

use*_*739 -1 c winapi screenshot colors printscreen

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

实际上,我可以获得光标所在像素的RGB.

但我想创建一个窗口,将"打印"部分屏幕(靠近光标)放入此窗口.

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

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

有没有一个非常有效的功能,像"PrintScreen"(并且可以指定一个矩形作为参数)?非常有效,我的意思是当一个移动鼠标时,该功能可以非常快速地刷新窗口并且不会使用太多的系统资源.

在此输入图像描述小号

kmd*_*mdv 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;
    }
Run Code Online (Sandbox Code Playgroud)

从:

http://forum.4programmers.net/C_i_C++/149036-WINAPI_Print_screen_przyslonietego_okna

  • 将像素复制到位图中.要将该位图的大版本放在不同的窗口中,需要调用[`StretchBlt`] [http://msdn.microsoft.com/en-us/library/windows/desktop/dd145120(v = vs.85) )的.aspx]. (2认同)