0

デバイス コンテキストと互換性のあるビットマップを作成し、取得したハンドルを BITMAP 構造体に関連付けるにはどうすればよいですか? 私が書く場合:

...
HBITMAP hbitmap = CreateCompatibleBitmap(hdc, width, height); // these three arguments are initialized somewhere else
hbitmap = CreateBitmapIndirect(bitmap); // argument already initialized and properly filled
...

hdc と互換性のある HBITMAP ハンドルが作成され、新しい HBITMAP (ビットマップ データで満たされた) が初期化されますが、互換性は維持されません。BITMAP から HBITMAP を作成するのではなく、初期化された HBITMAP を既存の BITMAP ソースで埋める機能はありますか?

4

2 に答える 2

1

CopyImage関数

新しいイメージ (アイコン、カーソル、またはビットマップ) を作成し、指定されたイメージの属性を新しいイメージにコピーします。必要に応じて、関数は新しいイメージの目的のサイズに合わせてビットを引き伸ばします。

HANDLE WINAPI CopyImage(
  HANDLE hImage,
  UINT uType,
  int cxDesired,
  int cyDesired,
  UINT fuFlags
);

hImage コピーするイメージへのハンドル。

uType コピーするイメージのタイプ。このパラメーターは、次のいずれかの値になります。

  • IMAGE_BITMAP 0 ビットマップをコピーします。
  • IMAGE_ICON 1 アイコンをコピーします。
  • IMAGE_CURSOR 2 カーソルをコピーします。

cxDesired イメージの目的の幅 (ピクセル単位)。これがゼロの場合、返される画像は元の hImage と同じ幅になります。

cyDesired イメージの目的の高さ (ピクセル単位)。これがゼロの場合、返される画像は元の hImage と同じ高さになります。

fuFlags

于 2011-10-19T20:56:41.803 に答える
0

CreateBitmapIndirectBITMAPその入力を引き受けます。GetObjectそして、あなたはからそれを得ることができますHBITMAP

BITMAP Bitmap;
INT nResult = GetObject((HGDIOBJ) hBitmap, sizeof Bitmap, &Bitmap);

CreateBitmapIndirectこの構造体からビットマップを作成できるようになります。またはCreateCompatibleBitmap、取得したから幅/高さを提供する互換性のあるビットマップを作成するために使用できますBitmap

于 2011-10-19T20:31:48.500 に答える