0

サイコロを振って対応するサイコロのビットマップを表示するにはどうすればよいですか

簡単で効率的なコード例をいくつか教えてください。

void CMFCApplication12Dlg::OnBnClickedDiceroll()

    {  
       int die1 = 1 + rand() % 6; // first die roll
       int die2 = 1 + rand() % 6; // second die roll
       //display die1 & die2
    }

// void CMFCApplication12Dlg:: OnPaint ハンドラ ()

{
//load the image file
    CString szFilename("C:\\Talla\\yourimg.bmp");
    HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename,
    IMAGE_BITMAP,0,0,
    LR_LOADFROMFILE|LR_CREATEDIBSECTION);

//Create a Bitmap Object and Attach It to the Object
    CBitmap bmp;
    bmp.Attach(hBmp);

// Create a Memory DC and Select the BMP to It
    CClientDC dc(this);
    CDC bmDC;
    bmDC.CreateCompatibleDC(&dc);
    CBitmap *pOldbmp = bmDC.SelectObject(&bmp);

//Get the BMP Height and Width 
    BITMAP bi;
    bmp.GetBitmap(&bi);

//Get the Block of Pixels from memoryDC to the Screen

    dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);
    bmDC.SelectObject(pOldbmp);
    }
4

1 に答える 1

2

でウィンドウを無効にしInvalidateRectて、それ自体を再描画します。ハンドラーではWM_PAINT、ダイ番号をリソース ID に変換する必要があります。次に、リソースからビットマップをロードしますLoadImage。メモリ DC を作成し、そこにビットマップを選択し、使用BitBltしてウィンドウにコピーします。

于 2013-04-25T00:58:44.820 に答える