2013-04-25 11 views
0

Как бы вы о прокатке кости и отображения соответствующей матрицы лица растровогорастровый по diceroll

некоторые быстрые и эффективные примеры кода?

void CMFCApplication12Dlg::OnBnClickedDiceroll() 

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

// аннулируются обработчик 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); 
    } 

ответ

2

Аннулируйте окно с InvalidateRect так, чтобы он перерисовывает себя. В обработчике WM_PAINT вам необходимо преобразовать номер штампа в идентификатор ресурса. Затем вы загружаете растровое изображение из ресурсов с помощью LoadImage. Создайте память DC и выберите в нее растровое изображение, затем используйте BitBlt, чтобы скопировать его в окно.

+0

уточнить ...... – Mac

+0

@Mac код, который у вас похож на хороший старт. Вместо того, чтобы помещать его в обработчик OnBnClicked, поместите его в обработчик OnPaint. Вам не понадобится CClientDC, потому что вы автоматически получите его в OnPaint. –

+0

@Mac, как я уже сказал, вы вызываете InvalidateRect, и в результате получится вызов OnPaint. –

 Смежные вопросы

  • Нет связанных вопросов^_^