描画コンテキストとの間で直接、つまりウィンドウのペイント操作中にピクセルを読み書きしたい。
GetPixel
Windows GDIには/関数があることは理解していますSetPixel
が、大規模な操作の場合は、ピクセルデータをメモリに直接読み書きできる方がはるかに優れています。
標準のGDIを使用してこれを行うにはどうすればよいですか?
互換性のあるDC、ビットマップを作成できます。
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hBmp = CreateCompatibleBitmap(hdc, WIDTH, HEIGHT);
SelectObject(hMemDC, hBmp);
次に、ビットを取得するために使用できるGetDIBits関数があります。
int GetDIBits(
_In_ HDC hdc,
_In_ HBITMAP hbmp,
_In_ UINT uStartScan,
_In_ UINT cScanLines,
_Out_ LPVOID lpvBits,
_Inout_ LPBITMAPINFO lpbi,
_In_ UINT uUsage
);
注: BITMAPINFO(lpbiパラメーター)を介して画像のサイズと形式を取得するには、lpvBitsをNULLに設定する必要がある場合があります。
ビットマップのデータへのポインタを含む構造体GetObject
を取得するためにBITMAP
使用します。