4

描画コンテキストとの間で直接、つまりウィンドウのペイント操作中にピクセルを読み書きしたい。

GetPixelWindows GDIには/関数があることは理解していますSetPixelが、大規模な操作の場合は、ピクセルデータをメモリに直接読み書きできる方がはるかに優れています。

標準のGDIを使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

3

互換性のある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に設定する必要がある場合があります。

于 2013-02-17T07:41:26.853 に答える
1

ビットマップのデータへのポインタを含む構造体GetObjectを取得するためにBITMAP使用します。

于 2013-02-17T07:57:19.583 に答える