ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

Áß¿äÇÔ¼ö    1

¹è°æ°ú ÇÔ¼ºµÈ ¾Ö´Ï¸ÞÀ̼Ç

ÇнÀ¸ñÇ¥

¹è°æ°ú ÇÕ¼ºµÈ ¾Ö´Ï¸ÞÀÌ¼Ç ÇÁ·Î±×·¥À» ¸¸µç´Ù.

ÇнÀÁÖÁ¦

 

¿¹½À³»¿ë

 

½Ç½À¹æ¹ý

¸ñ    Â÷

1.        ¹è°æ ±×¸²Àº ¸®¼Ò½º¿¡ Ãß°¡ÇÑ´Ù. [±×¸² ³»·Á¹Þ±â]

±×¸²ÀÇ ID¸¦ ¡°IDB_BACK¡±·Î ÇÑ´Ù.

2.        OnDraw ÇÔ¼ö¿¡ ¹è°æÀ» ±×¸®´Â ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

void CBMPView::OnDraw(CDC* pDC)

{

              CBitmap bmpBack;

              bmpBack.LoadBitmap(IDB_BACK);

 

              CDC MemDC;

              MemDC.CreateCompatibleDC(pDC);

 

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

              MemDC.SelectObject(&bmpBack);

 

              pDC->BitBlt(0, 0, 256, 192, &MemDC, 0, 0, SRCCOPY);

              MemDC.SelectObject(pOldBitmap);

 

              DrawBitmap();

}

 

¿©±â±îÁö ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸é ¾Æ·¡ ±×¸²°ú °°ÀÌ ±×¸²ÀÌ ÀÚ¿¬½º·´Áö¾Ê´Ù. ´ÙÀ½Àº À̸¦ ¼öÁ¤ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù.

 

3.        ¸¶½ºÅ© ºñÆ®¸ÊÀ» ¸¸µç´Ù.

 

¸¶½ºÅ©´Â ±×¸² ºÎºÐ¸¸ °ËÁ¤»ö(ºñÆ®0)ÀÌ´Ù. ÀÌ´Â ´Ù¸¥ ±×¸²°ú AND ¿¬»êÀ» ÇÏ¿©µµ 0ÀÌ µÇ¾î °ËÁ¤»öÀÌ µÇ°í ÇÏ¾á ºÎºÐ(ºñÆ®1)Àº AND ¿¬»êÀ» Çصµ ±×´ë·Î Ãâ·ÂµÈ´Ù. ±×·¯¹Ç·Î ¹è°æÀº AND ¿¬»êÀ» ÇÏ°í ¾ÆÀÌÄÜÀº OR ¿¬»êÀ» ÇÏ¸é ¹è°æ°ú ¾ÆÀÌÄÜÀ» ±×´ë·Î »ì¸± ¼ö ÀÖ´Ù.

DrawBitmap ÇÔ¼ö¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

void CBMPView::DrawBitmap()

{

              static int nAnimate;

              CClientDC dc(this);

 

              // ȣȯ¼º ÀÖ´Â ¸Þ¸ð¸® DC¸¦ »ý¼º

              CDC MemDC;

              MemDC.CreateCompatibleDC(&dc);

 

              // ¸®¼Ò½º¿¡¼­ ºñÆ®¸Ê Àбâ

              CBitmap bmpMask, bmpMan, bmpBack;

              bmpMask.LoadBitmap(IDB_MASK);

              bmpMan.LoadBitmap(IDB_MAN);

              bmpBack.LoadBitmap(IDB_BACK);

 

              // ¹è°æ ´Ù½Ã ±×¸®±â

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

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

 

              // ¸¶½ºÅ© ±×¸®±â

              MemDC.SelectObject(&bmpMask);

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

 

              // ¾ÆÀÌÄÜ ±×¸² ±×¸®±â

              MemDC.SelectObject(&bmpMan);

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

 

              // ¾Ö´Ï¸ÞÀÌ¼Ç Ä«¿îÅ͸¦ Áõ°¡½ÃÅ´

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

 

              MemDC.SelectObject(pOldBitmap);

}

 

 

óÀ½

°ú    Á¦

1.        À§ ÇÁ·Î±×·¥¿¡¼­ µ¿¿µ»óÀÇ ÁÂÇ¥¸¦ º¯È­½ÃÄÑ µ¿ÀÛ½ÃÄÑ º¸ÀÚ

Çì´õ ÆÄÀÏ¿¡ ´ÙÀ½ µÎ º¯¼ö¸¦ Ãß°¡ ½ÃŲ´Ù.

 

public:

              int xLoc,yLoc;

              void DrawBitmap();

              virtual ~CBMPView();

 

´ÙÀ½ÀÇ ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ´Ù.

 

void CBMPView::DrawBitmap()

{

              static int nAnimate;

              CClientDC dc(this);

 

              // ȣȯ¼º ÀÖ´Â ¸Þ¸ð¸® DC¸¦ »ý¼º

              CDC MemDC;

              MemDC.CreateCompatibleDC(&dc);

 

              // ¸®¼Ò½º¿¡¼­ ºñÆ®¸Ê Àбâ

              CBitmap bmpMask, bmpMan, bmpBack;

              bmpMask.LoadBitmap(IDB_MASK);

              bmpMan.LoadBitmap(IDB_MAN);

              bmpBack.LoadBitmap(IDB_BACK);

 

              // ±×¸²ÀÇ ÁÂÇ¥°ªÀ» xLoc,yLoc ·Î ÇÏ°í ÀÌ °ªÀ» º¯È­ ½ÃŲ´Ù.

              xLoc--;

              yLoc--;

              if(xLoc<=0)

                             xLoc=150;

              if(yLoc<=0)

                             yLoc=150;

 

              // ¹è°æ ´Ù½Ã ±×¸®±â

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

              //dc.BitBlt(xLoc, yLoc, 32, 32, &MemDC, 50, 50, SRCCOPY);

              dc.BitBlt(0, 0, 256, 192, &MemDC, 0, 0, SRCCOPY);

 

              // ¸¶½ºÅ© ±×¸®±â

              MemDC.SelectObject(&bmpMask);

              dc.BitBlt(xLoc, yLoc, 32, 32, &MemDC, 32*nAnimate, 0, SRCAND);

 

              // ¾ÆÀÌÄÜ ±×¸² ±×¸®±â

              MemDC.SelectObject(&bmpMan);

              dc.BitBlt(xLoc, yLoc, 32, 32, &MemDC, 32*nAnimate, 0, SRCPAINT);

 

              // ¾Ö´Ï¸ÞÀÌ¼Ç Ä«¿îÅ͸¦ Áõ°¡½ÃÅ´

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

 

              MemDC.SelectObject(pOldBitmap);

}

 

void CBMPView::OnInitialUpdate()

{

              CView::OnInitialUpdate();

             

              // TODO: Add your specialized code here and/or call the base class

              SetTimer(0,200,NULL);

              xLoc=150;

              yLoc=150;

}

 

[ÀüüÇÁ·Î±×·¥ ³»·Á¹Þ±â]

2.        °úÁ¦1ÀÇ µ¿ÀÛÀº ÁÂÃøÀ¸·Î ¿òÁ÷À̳ª À̹ø¿¡´Â ¿ìÃøÀ¸·Î À̵¿ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º»´Ù. ÀÌ´Â ¡°StretchBlt¡± ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ±×¸²À» xÃàÀ¸·Î ȸÀü ½ÃÄÑ ±×¸²À» À̵¿ ½ÃŲ´Ù. °úÁ¦1 ÇÁ·Î±×·¥¿¡¼­ ¾Æ·¡ ÇÔ¼ö¿Í ÁÂÇ¥¸¦ º¯È­½ÃÅ°¸é µÈ´Ù.

 

void CBMPView::DrawBitmap()

{

              static int nAnimate;

              CClientDC dc(this);

 

              // ȣȯ¼º ÀÖ´Â ¸Þ¸ð¸® DC¸¦ »ý¼º

              CDC MemDC;

              MemDC.CreateCompatibleDC(&dc);

 

              // ¸®¼Ò½º¿¡¼­ ºñÆ®¸Ê Àбâ

              CBitmap bmpMask, bmpMan, bmpBack;

              bmpMask.LoadBitmap(IDB_MASK);

              bmpMan.LoadBitmap(IDB_MAN);

              bmpBack.LoadBitmap(IDB_BACK);

 

              // ±×¸²ÀÇ ÁÂÇ¥°ªÀ» xLoc,yLoc ·Î ÇÏ°í ÀÌ °ªÀ» º¯È­ ½ÃŲ´Ù.

              xLoc++;

              yLoc--;

              if(xLoc>=150)

                             xLoc=0;

              if(yLoc<=0)

                             yLoc=150;

 

              // ¹è°æ ´Ù½Ã ±×¸®±â

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

              dc.BitBlt(0, 0, 256, 192, &MemDC, 0, 0, SRCCOPY);

 

              // ¸¶½ºÅ© ±×¸®±â

              MemDC.SelectObject(&bmpMask);

              dc.StretchBlt(xLoc, yLoc, 32, 32, &MemDC, 32*(1+nAnimate), 0, -32, 32, SRCAND);

             

              // ¾ÆÀÌÄÜ ±×¸² ±×¸®±â

              MemDC.SelectObject(&bmpMan);

              dc.StretchBlt(xLoc, yLoc, 32, 32, &MemDC, 32*(1+nAnimate), 0, -32, 32, SRCPAINT);

             

              // ¾Ö´Ï¸ÞÀÌ¼Ç Ä«¿îÅ͸¦ Áõ°¡½ÃÅ´

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

 

              MemDC.SelectObject(pOldBitmap);

}

 

void CBMPView::OnInitialUpdate()

{

              CView::OnInitialUpdate();

             

              // TODO: Add your specialized code here and/or call the base class

              SetTimer(0,100,NULL);

              xLoc=0;

              yLoc=150;

}

 

 

3.        °úÁ¦1°ú °úÁ¦2¸¦ ÇÕ¼ºÇÏ¿© Á¿ì·Î ¿òÁ÷ÀÌ´Â ¿¡´Ï¸ÞÀ̼ÇÀ» ¸¸µå½Ã¿À

4.        ¡°°úÁ¦1¡±À» WorkLeft() ¡°°úÁ¦2¡±¸¦ WorkRight()  ÇÔ¼ö·Î ¸¸µé°í ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é Á·ÎÀ̵¿ÇÏ°í, ¿ÞÂÊ ¹öÆ°À» ´©¸£¸é ¿ì·Î À̵¿ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µå½Ã¿À.

¾Æ·¡ ±×¸²°ú °°ÀÌ ¼±ÅÃÇÏ¿© ¡°OnLButtonDown¡±  ¡°OnRButtonDown¡± µÎ°³ÀÇ ÇÔ¼ö¸¦ ¸¸µç´Ù.

 

int nModeWork; ¸¦ ¼±¾ðÇÏ°í OnInitialUpdate() ÇÔ¼ö¿¡ ÃʱâÄ¡¸¦ ¡°0¡±À¸·Î ÇÑ´Ù.

¡°OnLButtonDown¡±ÇÔ¼ö¿¡ nModeWork=1, ¡°OnRButtonDown¡±ÇÔ¼ö¿¡ nModeWork=2 ÇÑ´Ù.

 ¡°1¡±ÀÏ ¶§ ¡± WorkLeft() ÇÁ·Î±×·¥À» ¡°2¡±ÀÏ ¶§ ¡± WorkRight() ÇÁ·Î±×·¥ÀÌ Å¸ÀÌ¸Ó ÇÔ¼ö¿¡¼­ µ¿ÀÛ Çϵµ·Ï ÇÑ´Ù.

   [ÀüüÇÁ·Î±×·¥ ³»·Á¹Þ±â]

Áß¿äÇÔ¼ö