画面から画像をキャプチャしようとしています。現在、スクリーンショットを撮ってディスクに保存するコードがありますが、毎回保存したくありません。オンラインで他の例を数時間読んだ後でも、このプロセスがどのように機能するかを理解していないと感じています.
2 つの目標は、メモリ内に画面を作成して別の関数に渡すことと、(x,y) 座標を指定して画面の選択した部分のみをキャプチャできるようにすることです。
私はコーディングに比較的慣れていないので、これが些細なことであれば驚くことではありませんが、それでも説明をいただければ幸いです。
これは、オンラインで見つけて作業しているサンプルコードです。
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string>
using namespace std;
void ScreenShot()
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HWND hDesktopWnd = GetDesktopWindow();
HDC hDesktopDC = GetDC(hDesktopWnd);
HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDesktopDC,
nScreenWidth, nScreenHeight);
SelectObject(hCaptureDC, hCaptureBitmap);
BitBlt(hCaptureDC, 0, 0, nScreenWidth, nScreenHeight,
hDesktopDC, 0, 0, SRCCOPY | CAPTUREBLT);
//SaveCapturedBitmap(hCaptureBitmap); //Place holder - Put your code here to save the captured image to disk
ReleaseDC(hDesktopWnd, hDesktopDC);
DeleteDC(hCaptureDC);
DeleteObject(hCaptureBitmap);
}