-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 に答える