C++ 骰子位图
您将如何滚动骰子并显示相应的模具面位图 一些快速有效的代码示例C++ 骰子位图,c++,visual-studio-2012,mfc,bitmap,C++,Visual Studio 2012,Mfc,Bitmap,您将如何滚动骰子并显示相应的模具面位图 一些快速有效的代码示例 void CMFCApplication12Dlg::OnBnClickedDiceroll() { int die1 = 1 + rand() % 6; // first die roll int die2 = 1 + rand() % 6; // second die roll //display die1 & die2 } // void CMFCApp
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处理程序()
使用使窗口无效,以便它重新绘制自身。在
WM_PAINT
处理程序中,需要将模具编号转换为资源ID。然后使用LoadImage
从资源加载位图。创建一个内存DC并将位图选择到其中,然后使用BitBlt
将其复制到窗口。@Mac您的代码看起来是一个很好的开始。与其将其放入OnBnClicked处理程序,不如将其放入OnPaint处理程序。您不需要CClientDC,因为您将在OnPaint中自动获得一个。@Mac正如我所说,您调用InvalidateBu立,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);
}