【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.18507

ビットマップの一部を切り取った描画ができない!
投稿者---サボメロン(2004/12/05 17:54:06)


お初です。早速ですが、教えてください。
ゲームを作ろうとしています。しかし、肝心のタイトル表示から転んでます。
DirectXは使わずにAPIだけで作っています。OSはXP。使ってるソフトはVC6++です。
ソースは下に載せてあります。処理内容は見ていただければわかると思うので、症状を説明します。
そのままSelectObject(*hMemDC,hTitle)で描画しようとすると、サイズ指定はできないものの、ビットマップはビットマップと同サイズで描画されます。問題なのは、hTitleを一時的にhBackに入れて、それをBitBltで一部だけ切り取ってから
、hMemDCに入れると、描画したときに画面が真っ白になります。(ビットマップが描画されていない)
ビットマップの一部だけを切り取って描画する方法を教えてください。お願いします。真っ白になる原因もできればお願いします。
ちなみに、InitTitle関数はゲーム開始時に1度しか通らない関数です。
描画はGameMain関数です。BitBltで描画してます。

よろしくお願いします。
void GameMain(HWND hWnd)
{
            HDC  hdc;
    static  HDC  hMemDC;
    
    InitTitle(hWnd,&hMemDC);
    hdc  = GetDC(hWnd);
    BitBlt(hdc,0,0,512,480,hMemDC,0,0,SRCCOPY);
    ReleaseDC(hWnd,hdc);
}
void InitTitle(HWND hWnd,HDC *hMemDC)
{
    HDC   hdc    = NULL;
    HDC   hBackDC  = NULL;
    HBITMAP  hTitle   = NULL;
    
    hdc   = GetDC(hWnd);
    *hMemDC  = CreateCompatibleDC(hdc);
    hBackDC  = CreateCompatibleDC(hdc);
    hTitle    = (HBITMAP)LoadImage(NULL,"title.bmp" ,IMAGE_BITMAP,512,480,LR_LOADFROMFILE);
    PatBlt(*hMemDC,0,0,512,480,WHITENESS);
    SelectObject(hBackDC,hTitle);
    BitBlt(*hMemDC,0,0,100,100,hBackDC,120,120,SRCCOPY);

    DeleteObject(hTitle);
    DeleteDC(hBackDC);
    ReleaseDC(hWnd, hdc);
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ビットマップの一部を切り取った描画ができない! 18519 朱鷺 2004/12/06 08:11:58


No.18519

Re:ビットマップの一部を切り取った描画ができない!
投稿者---朱鷺(2004/12/06 08:11:58)


バック画面にもビットマップを割り当ててから描画してみてください


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧