0

1 つの DC に対して 2 つのビットマップを作成するのは正しいですか?

私の状況は私が持っている

 dc = CreateCompatibleDC(NULL); 
 bitmap = CreateDIBSection(dc, pbmi1, DIB_RGB_COLORS, (void **) &bmpBits, NULL, 0);
 extra_bitmap = CreateDIBSection(dc, pbmi2, DIB_RGB_COLORS, (void **) &extraBmpBits, NULL, 0);

違いは: bitmap は width*height 、extra_bitmap は width/2*height*2 です

ユーザーからの要求に応じて、両方の画像を画面に表示する必要があります。

上記のコードを試してみましたが、実行できます (私の限られたテストにのみ基づいています)。しかし、それが正しい方法であるかどうかはわかりません。提案やコメントは大歓迎です。ありがとう。

ところで、1 つの DC に関連付けられた 2 つのビットマップを持つことができる場合、それらを解放する正しい方法は何ですか? DeleteDC(dc) を呼び出すことはできますか? ありがとう。

4

3 に答える 3

0

数時間探し回った後、私は

http://www.ucancode.net/Visual_C_MFC_Samples/CreateDIBSection-BITMAPINFOHEADER-CreateCompatibleDC-BITMAPINFO.htm

この例では:

// Create HDCs to hold our surfaces.
hdcSrc1 = CreateCompatibleDC(hdcDest);
if (!hdcSrc1) goto HANDLEERROR;

hdcSrc2 = CreateCompatibleDC(hdcDest);
if (!hdcSrc2) goto HANDLEERROR;

削除の場合:

  DeleteDC(hdcSrc1);
  DeleteDC(hdcSrc2);
  DeleteObject(hbmSrc1);  // hbmSrc1 and hbmSrc2 are created using  hbm = CreateDIBSection(hDC, &bmi, DIB_RGB_COLORS,(void **)&pBits, NULL, 0);
  DeleteObject(hbmSrc2);

これが他の人に役立つことを願っています。ありがとう。

于 2013-08-06T20:05:44.797 に答える