1

ファイルに保存されているビットマップをアプリケーションにロードしようとしています。私は次の方法で行います

HBITMAP hbitmap = NULL;
hbitmap = (HBITMAP)LoadImage(NULL,TEXT("F:\\Microsoft Visual Studio 2010 Projects\\test\\test\\bitmap1.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
BITMAP bmp;
GetObject(hbitmap,sizeof(BITMAP),&bmp);

ビットマップ構造体では、ビットマップ サイズは次のように正しいです。

bmp {bmType=0 bmWidth=1920 bmHeight=1080 ...}   tagBITMAP
bmType          0          long
bmWidth         1920           long
bmHeight            1080           long
bmWidthBytes    7680           long
bmPlanes            1          unsigned short
bmBitsPixel         32         unsigned short
bmBits          0x00000000     void *

問題は、bmBits であるビットマップへのポインターが常に NULL (0x00000000) を指していることです。誰でもこの問題を解決する方法を教えてもらえますか? どうもありがとう!

4

1 に答える 1

3

これは文書化された動作です。GetObject() の MSDN 記事から:

hgdiobj が他の方法で作成されたビットマップのハンドルである場合、GetObject はビットマップの幅、高さ、および色の形式情報のみを返します。GetDIBits または GetBitmapBits 関数を呼び出して、ビットマップのビット値を取得できます。

于 2013-10-09T16:44:17.477 に答える