JHB의 프로그래밍 삽질기

그림 확대/축소가 부드럽게 이루어 지도록 하는 프로그램 본문

PROGRAMMING/C C++ MFC

그림 확대/축소가 부드럽게 이루어 지도록 하는 프로그램

roter 2009.01.05 13:38


제작환경
Visual Studio 2005
C++/Win32 API

그림을 확대/축소할 때 스무스하게 이루어지도록 코딩했습니다.

더블버퍼링 예제로도 도움이 될거에요. 감사합니다.


주요코드

 case WM_TIMER:
  switch(wParam)
  {
  case 1:

   if(nSampleWidth != nDestWidth)
   {
    if(bZoomMode)
    {
     nCntWidth = abs(nDestWidth - nSampleWidth);
     nSampleWidth+=(nCntWidth/7);
    }
    else
    {
     nCntWidth = abs(nDestWidth - nSampleWidth);
     nSampleWidth-=(nCntWidth/7);
    }
   }
   if(nSampleHeight != nDestHeight)
   {
    if(bZoomMode)
    {
     nCntHeight = abs(nDestHeight - nSampleHeight);
     nSampleHeight+=(nCntHeight/7);
    }
    else
    {
     nCntHeight = abs(nDestHeight - nSampleHeight);
     nSampleHeight-=(nCntHeight/7);
    }
   }
   zDelta = 0;

   BitBlt(hBackDC,0,0,rt.right-rt.left,rt.bottom-rt.top,hCleanDC,0,0,SRCCOPY);
   StretchBlt(hBackDC,0,0,nSampleWidth,nSampleHeight,hMemDC,0,0,480,640,SRCCOPY);
   
   InvalidateRect(hWnd,NULL,FALSE);

   break;
  }

  break;
 
 
 case WM_MOUSEWHEEL:
  zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
  if(zDelta > 0)
  {
   nDestWidth = nSampleWidth * 5 / 4;
   nDestHeight = nSampleHeight * 5 / 4;
   bZoomMode = TRUE;
  }
  if(zDelta < 0)
  {
   nDestWidth = nSampleWidth * 4 / 5;
   nDestHeight = nSampleHeight * 4 / 5;
   bZoomMode = FALSE;
  }
  break;

0 Comments
댓글쓰기 폼