³ª.±×¸®µå¿¡ Á¤·Ä

ÀÌÁ¦ºÎÅÍ ¸ðµç µµÇüÀÇ ÁÂÇ¥¿Í Å©±â´Â ±×¸®µå¿¡ ¸Â°Ô Á¤·ÄµÇ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ÁÖ¾îÁø ÁÂÇ¥¸¦ ±×¸®µå °£°Ý¿¡ ¸Â°Ô Á¶Á¤ÇÑ´Ù.

 

void AdjustToGrid(int &x, int &y)

{

   if (bGrid) {

      x=x/GridX*GridX;

      y=y/GridY*GridY;

   }

}

 

ÁÖ¾îÁø °ªÀ» ±×¸®µåÀÇ ¹è¼ö À§Ä¡°¡ µÇµµ·Ï Á¶Á¤ÇßÀ¸¹Ç·Î ÁÂÇ¥¸¦ ÀÔ·ÂÇÏ¸é ±ÙÁ¢ÇÑ ±×¸®µå À§Ä¡·Î ³»¸²µÉ °ÍÀÌ´Ù. ÀÌ ÇÔ¼ö¿¡¼­ bGrid º¯¼ö°ªÀ» ÂüÁ¶ÇϹǷΠÁÂÇ¥¸¦ Á¶Á¤ÇÏ´Â ¸ðµç °÷¿¡¼­´Â ¿É¼ÇÀÇ ¼³Á¤ »óÅÂ¿Í »ó°ü¾øÀÌ ÁÂÇ¥¸¦ Àû¿ëÇϱâ Àü¿¡ ÀÌ ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù. ´ëºÎºÐ ¸¶¿ì½º Çڵ鷯¿¡¼­ ÁÂÇ¥¸¦ ´Ù·ç°í ÀÖ´Ù.

 

LRESULT OnLButtonDown(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   int TempSel;

   int nHit;

 

   if (NowTool==DT_SELECT) {

      nHit=TrackerHitTest(LOWORD(lParam),HIWORD(lParam));

      if (nHit != 0) {

          oldx=LOWORD(lParam);

          oldy=HIWORD(lParam);

          AdjustToGrid(oldx,oldy);

          dObj=*arObj[NowSel];

          SizeCorner=nHit;

          DrawTemp(&dObj);

          DragMode=DM_SIZE;

      } else {

          TempSel=FindObject(LOWORD(lParam),HIWORD(lParam));

          if (NowSel != TempSel) {

             NowSel=TempSel;

             InvalidateRect(hWnd,NULL,TRUE);

             UpdateWindow(hWnd);

          }

         if (NowSel != -1) {

             oldx=LOWORD(lParam);

             oldy=HIWORD(lParam);

             AdjustToGrid(oldx,oldy);

             dObj=*arObj[NowSel];

             DrawTemp(&dObj);

             DragMode=DM_MOVE;

          }

      }

   } else {

      sx=LOWORD(lParam);

      sy=HIWORD(lParam);

      AdjustToGrid(sx,sy);

      oldx=sx;

      oldy=sy;

      DragMode=DM_DRAW;

   }

   SetCapture(hWnd);

   return 0;

}

 

LRESULT OnMouseMove(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   int ex,ey;

   HDC hdc;

 

   ex=(int)(short)LOWORD(lParam);

   ey=(int)(short)HIWORD(lParam);

   AdjustToGrid(ex,ey);

   ....

 

µå·¡±×¸¦ ½ÃÀÛÇϱâ Àü¿¡, µå·¡±× Áß¿¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ±×¸®µå¿¡ ¸Â°Ô ÁÂÇ¥¸¦ Á¶Á¤ÇÏ¸é µÈ´Ù. Űº¸µå À̵¿ Äڵ嵵 ±×¸®µåÀÇ ¿µÇâÀ» ¹Þµµ·Ï »ó¼ö 8À» º¯¼ö·Î ¹Ù²Û´Ù.

 

LRESULT OnKeyDown(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   ....

   if (bControl) {

      dx=1;

      dy=1;

   } else {

      dx=GridX;

      dy=GridY;

   }

   ....

 

¿©±â±îÁö ÀÛ¼ºÇÑ ÈÄ Å×½ºÆ®ÇØ º¸¸é µµÇüÀÇ ¹èÄ¡ ¹× À̵¿ÀÌ ±×¸®µå ´ÜÀ§·Î ÀÌ·ç¾îÁ® ÈξÀ ´õ ´Ù·ç±â ½¬¿ï °ÍÀÌ´Ù. ±×¸®µåÀÇ ÇÙ½ÉÀº a=a/b*b¶ó´Â ¾ÆÁÖ °£´ÜÇÑ ¼ö½ÄÀÌ´Ù.