PrintWindow API を使用して、特定のウィンドウ (hwnd) のスクリーンショットを撮っています。これはまったく問題なく動作し、ウィンドウ全体のスクリーンショットを撮ります。私の質問は: 私のウィンドウの高さは 742 で、幅は 653 です。ウィンドウの中央のどこかでスクリーンショットを撮りたい場合 ( 0,0 からではありません)。PrintWindow で x 軸と y 軸を指定する方法を教えてください。私のスニップネット コードは次のようになります。
void Screenshot()
{
CImage image;
image.Create(imageWidth, imageHeight, 24);
CImageDC imageDC(image);
HWND hwnd = ::FindWindow(0,"EIML");
PrintWindow(hwnd, imageDC, PW_CLIENTONLY);
image.Save("H:\\out.jpg",ImageFormatJPEG);
}
x 軸と y 軸を指定するオプションがある BitBlt や StretchBlt などの代替方法を試しました。しかし、私のプロジェクトでは時間効率が非常に重要です。BitBlt & StretchBlt で試したところ、時間効率は約 25ms でした。しかし、PrintWindow でスクリーンショットを撮ると、その時間効率は 6~8ms です。したがって、これは私のプロジェクトに非常に適しています。
ただし、PrintWindow API は常に (0,0) からウィンドウ イメージをキャプチャします。x=20 & y=30 などの指定された場所でウィンドウのスクリーンショットを撮る方法を誰か教えて/提案してもらえますか。
ありがとうございました。