학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

중요함수    1

비트맵 애니메이션

학습목표

비트맵을 가지고 애니메이션 프로그램을 만든다.

학습주제

0.2초마다 동작하는 타이머 함수를 만들고 때마다 새로운 그림을 보여 준다.

단원의 비트맵 프로그램을 이어서 만들겠습니다.

예습내용

지난주 비트맵 프로그램을 내려 받아서 프로그램 한다.

[전체프로그램 내려받기]

실습방법

   

1. 타이머를 설정한다.

 

 

 

 

예제1. “DrawBitmap” 함수에서 아래 빨간 글씨부분과 같이 차례로 선택되어 그려지도록 프로그램한다.

 

 

void CBMPView::DrawBitmap()

{

              static int nAnimate;

              CClientDC dc(this);

 

              // 호환성 있는 메모리 DC 생성

              CDC MemDC;

              MemDC.CreateCompatibleDC(&dc);

 

              // 리소스에서 비트맵을 읽어 들여 DC 선택

              CBitmap bitmap;

              bitmap. LoadBitmap(IDB_MAN);

              CBitmap *pOldBitmap = (CBitmap *)MemDC.SelectObject(&bitmap);

 

              // 비트맵 블록 전송

              dc.BitBlt(50, 50, 32, 32, &MemDC, 32*nAnimate, 0, SRCCOPY);

 

              // 애니메이션 카운터를 증가시킴

              if(++nAnimate > 3) nAnimate = 0;

 

              MemDC.SelectObject(pOldBitmap);

}

 

2. 타이머 함수에 DrawBitmap() 함수를 넣는다.

 

예제2

 

 

void CBMPView::OnTimer(UINT nIDEvent)

{

              // TODO: Add your message handler code here and/or call default

              DrawBitmap();

              CView::OnTimer(nIDEvent);

}

 

3. 프로그램이 시작될 수행되는 OnInitDialog() 타이머가 0.2 마다 동작하게 한다.

 

 

예제3

 

 

BOOL CBmpDlg::OnInitDialog()

{

        CDialog::OnInitDialog();

 

        // 시스템메뉴에"정보..." 메뉴항목을추가합니다.

 

        // IDM_ABOUTBOX는시스템명령범위에있어야합니다.

        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

        ASSERT(IDM_ABOUTBOX < 0xF000);

 

        CMenu* pSysMenu = GetSystemMenu(FALSE);

        if (pSysMenu != NULL)

        {

                CString strAboutMenu;

                strAboutMenu.LoadString(IDS_ABOUTBOX);

                if (!strAboutMenu.IsEmpty())

                {

                        pSysMenu->AppendMenu(MF_SEPARATOR);

                        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

                }

        }

 

        // 이대화상자의아이콘을설정합니다. 응용프로그램의주창이대화상자가아닐경우에는

        //  프레임워크가이작업을자동으로수행합니다.

        SetIcon(m_hIcon, TRUE);                  // 큰아이콘을설정합니다.

        SetIcon(m_hIcon, FALSE);         // 작은아이콘을설정합니다.

 

        // TODO: 여기에추가초기화작업을추가합니다.

        SetTimer(0,200,NULL);

        return TRUE;  // 포커스를컨트롤에설정하지않으면TRUE를반환합니다.

}

 

처음

   

 

중요함수