2012-04-02 8 views
0

での描画ではない...ここでのOnPaintでのコードは次のとおりです。components.icon.bmpのビットマップは、私が実際に画面上でつくれするCBitmapを得るように見えることはできませんCFrameWndの者のOnPaint

CRect frm; 
GetClientRect(frm); 

CClientDC dc(this); 
//dc.FillSolidRect(CRect(0, 0, 1000, 1000), RGB(255, 255, 255)); 
CDC dcMem; 
dcMem.CreateCompatibleDC(&dc); 
CBitmap* cache = dcMem.SelectObject(&components.icon.bmp); 

dc.BitBlt(0, 0, 55, 55, &dcMem, 0, 0, SRCCOPY); 
dc.SelectObject(cache); 

定義があります。 ..

components.icon.bmp.LoadBitmap(BMP_BOARDER); 
BITMAP icon; 
components.icon.bmp.GetBitmap(&icon); 

ここに問題はないはずです。ビットマップは32ビットのアルファビットマップであり、LoadBitmapはTRUEを返します。

24ビットでも動作しません。

----これを取得しました!私のリソースに問題があります

+0

私はGDIが約32ビットのビットマップを知っているとは思わなかった。私は24ビットしか扱っていないと思った。 – Robinson

+0

LoadBitmapは成功しましたか(TRUEを返しますか? –

+0

32ビットbmpsをddrawingするにはどうすればよいですか? – user965369

答えて

0

このコードは私には良いようですが、まだ間違っていることがたくさんあります。問題がどこにあるかを知るためにコードをテストしてください: - 何か他のもの(例えば四角形)を描画すると、それはフレームウィンドウに表示されますか? - bmpをファイルに保存して、問題がないかどうか確認してください。 - ツールを使用してbmpを24ビットに変換し、それが機能するかどうかを確認してください。

問題がどこにあるか分かると、問題に集中できます。

おそらく、GDIを使って32ビットbmpを描画することはできませんが、少なくとも何か(黒い四角)を取得する必要があります。とにかく、GDIを使用して32ビットのアルファチャンネルbmpsを描画する必要がある場合は、画像にあらかじめ乗算し、BitBltの代わりにAlphaBlendメソッドを使用する必要があります。

+0

私は四角形とプリミティブを描画することができますが、BitBlt関数を使用すると何も起こらないようです。病気は24ビットで試してください – user965369

+0

24ビットで試してみました。 – user965369

+0

これらの奇妙な「デバッグアサーション失敗」エラーポップアップ(2つ)が表示されていますが、無視してプログラムを実行します。 – user965369

関連する問題