2.GDI+ÀÇ ±¸Á¶

°¡.GDI¿Í ´Ù¸¥ Á¡

GDI´Â C¼öÁØÀÇ ÇÔ¼ö ÁýÇÕÀε¥ ºñÇØ GDI+´Â Ŭ·¡½ºÀÇ ÁýÇÕÀÌ´Ù. ¶óÀ̺귯¸®¸¦ ±¸¼ºÇÏ´Â ºÎÇ°µéÀÌ ´Ù¸§À¸·Î Çؼ­ Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ýµµ ÁúÀûÀ¸·Î ´Ù¸£´Ù. ±¸Ã¼ÀûÀ¸·Î ¾î¶² Á¡ÀÌ ´Ù¸¥Áö Å« Â÷ÀÌÁ¡ºÎÅÍ »ìÆ캸ÀÚ.

 

¨ç ¸ðµç ±×¸®±â ÇÔ¼öµéÀº ´Üµ¶À¸·Î Á¸ÀçÇÏ´Â ÇÔ¼ö°¡ ¾Æ´Ï¶ó Graphics Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î Á¤ÀǵǾî ÀÖ´Ù. ±×·¡¼­ ±×¸®±â¸¦ Çϱâ Àü¿¡ Graphics °´Ã¼¸¦ ¸ÕÀú »ý¼ºÇØ¾ß ÇÑ´Ù. GDI¿¡¼­ DC¸¦ ¸ÕÀú ¹ß±Þ¹Þ¾Æ¾ß¸¸ ¾î¶² Ãâ·ÂÀÌ¶óµµ °¡´ÉÇÑ °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù.

¨è GDIÀÇ DC¿¡´Â Ãâ·Â ¼Ó¼ºµéÀÌ ¸ðµÎ µé¾î Àִµ¥ ¹ÝÇØ GDI+ÀÇ Graphics °´Ã¼´Â ¾ÆÁÖ Æ¯¼öÇÑ ¸î°¡Áö¸¦ Á¦¿ÜÇÏ°í´Â ±×·ÁÁú µµÇü¿¡ ´ëÇÑ ¼Ó¼ºÀ» °¡ÁöÁö ¾Ê´Â´Ù. ±×·¡¼­ Ãâ·Â ÇÔ¼öµéÀº ±×¸®±â¿¡ ÇÊ¿äÇÑ °ªµéÀ» ¸Å¹ø Àμö·Î Àü´Þ¹Þ´Â´Ù. ¿¹¸¦ µé¾î GDI¿¡¼­ ÆĶõ»ö ¼±À» ±×¸®·Á¸é ÆĶõ»ö ÆæÀ» DC¿¡ ¼±ÅÃÇÑ ÈÄ ±×¸®°í ÆæÀ» ¼±Åà ÇØÁ¦ÇÏÁö¸¸ GDI+¿¡¼­´Â ¼±À» ±×¸± ¶§ Ææ ÀÚü¸¦ Àμö·Î Àü´ÞÇÑ´Ù. DC¿¡ GDI ¿ÀºêÁ§Æ®¸¦ ³Ö¾ú´Ù »°´Ù ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¨é ¶È°°Àº µµÇüÀ» ±×¸®´Â ÇÔ¼öµµ ÀμöÀÇ Å¸ÀÔ¿¡ µû¶ó ¿©·¯ °¡Áö°¡ ÁغñµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î ¼±À» ±ß±â À§ÇØ µÎ °³ÀÇ Á¡À» Àü´ÞÇÒ ¼öµµ ÀÖ°í ³× °³ÀÇ Á¤¼ö°ªÀ» Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. C++ ¾ð¾îÀÇ ÇÔ¼ö ¿À¹ö·Îµù ±â´ÉÀ» ½ÊºÐ È°¿ëÇÏ¿© Àμö ŸÀÔ¿¡ µû¶ó ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇϹǷΠ»óȲ¿¡ µû¶ó Æí¸®ÇÑ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù.

¨ê Ææ, ºê·¯½Ã µîÀÇ GDI ¿ÀºêÁ§Æ®µéÀº ¸ðµÎ C++ °´Ã¼À̹ǷΠÇØÁ¦ Äڵ带 µû·Î ÀÛ¼ºÇÒ ÇÊ¿ä°¡ ¾ø´Ù. Áö¿ª º¯¼ö·Î »ý¼ºµÈ °´Ã¼µéÀº ÇÔ¼ö°¡ Á¾·áµÉ ¶§ Æı«ÀÚ°¡ ÀÚµ¿À¸·Î È£ÃâµÇ¾î ÇÊ¿äÇÑ µÞÁ¤¸®¸¦ ÇÑ´Ù. ÀÌ°ÍÀÌ ¹Ù·Î C++ÀÇ ÀåÁ¡ÀÌ´Ù. ±×·¡¼­ ½Ç¼ö¿¡ ÀÇÇÑ ¸®¼Ò½º ´©ÃâÀÇ À§ÇèÀÌ GDIº¸´Ù ÈξÀ ´õ ³·´Ù. ¹°·Ð new ¿¬»êÀÚ·Î µ¿ÀûÀ¸·Î »ý¼ºÇÑ °´Ã¼´Â delete·Î Á÷Á¢ »èÁ¦ÇØ¾ß ÇÑ´Ù.

¨ë GDI+¿¡¼­ »ç¿ëÇÏ´Â ¸ðµç ¹®ÀÚ¿­Àº À¯´ÏÄڵ忩¾ß ÇÑ´Ù. ¹®ÀÚÇüÀº ¹Ýµå½Ã WCHARÇüÀ¸·Î ¼±¾ðÇØ¾ß ÇÏ¸ç ¹®ÀÚ¿­ »ó¼ö¾Õ¿¡´Â Á¢µÎ LÀ» ºÙ¿©¾ß ÇÑ´Ù. ÇÁ·ÎÁ§Æ® ÀÚü°¡ À¯´ÏÄڵ尡 ¾Æ´Ò °æ¿ì ¹®ÀÚ¿­À» À¯´ÏÄÚµå·Î º¯È¯ÇÑ ÈÄ »ç¿ëÇØ¾ß ÇÑ´Ù.

 

ÀÌ·± Â÷ÀÌÁ¡ ¿Ü¿¡µµ GDI+´Â ¹ÝÅõ¸í ó¸®, ÅؽºÆ®ÀÇ ¾ÈƼ ¾Ë¸®¾Æ½Ì, ´Ù¾çÇÑ ±×¸®±â ¿É¼Ç, ¾ÐÃà À̹ÌÁö Ãâ·Â µî Çì¾Æ¸± ¼ö ¾ø´Â ¸¹Àº ±â´ÉµéÀ» Ãß°¡·Î Á¦°øÇÑ´Ù. ±×·¡¼­ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â »õ·Î¿î ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§´Â °¡±ÞÀûÀ̸é GDIº¸´Ù´Â GDI+¸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÏ°í ÀÖ´Ù. ±×·¯³ª ȣȯ¼ºÀ» À§ÇØ GDIµµ ¾ÕÀ¸·Î °è¼Ó Áö¿øµÉ °ÍÀÌ´Ù.

½Ã±âÀûÀ¸·Î ´õ ´Ê°Ô ¸¸µé¾îÁø GDI+°¡ GDI¿¡ ºñÇؼ­´Â ´ç¿¬È÷ ´õ ¸¹Àº ±â´ÉÀ» Á¦°øÇÏ°í ¶§·Î´Â ´õ ÁÁÀº ¼º´ÉÀ» º¸ÀÌ°ÚÁö¸¸ Çö½ÇÀûÀ¸·Î´Â ¾ÕÀ¸·Îµµ »ó´çÇÑ ±â°£µ¿¾È GDI¸¦ ¿ÏÀü ´ëüÇϱâ´Â ¾î·Á¿ï °ÍÀ¸·Î ¿¹ÃøµÈ´Ù. ÀÏ´ÜÀº GDI°¡ ÇÁ·Î±×·¡¸Óµé¿¡°Ô ³Ê¹« Àͼ÷ÇØÁ® ÀÖ´Ù´Â °ü½ÀÀûÀÎ ¹®Á¦°¡ ÀÖ°í ¶Ç ¼Óµµ¶ó´Â ¾ÆÁÖ Áß¿äÇÑ Â÷ÀÌÁ¡ÀÌ Àֱ⠶§¹®ÀÌ´Ù.

¶óÀ̺귯¸®ÀÇ ±â´ÉÀÌ ¸¹¾ÆÁö¸é ´Ü¼øÇÑ Ãâ·Â¿¡ ´ëÇؼ­µµ ÀÌ°Í Àú°Í ½Å°æ½á¾ß ÇÒ °ÍÀÌ ¸¹¾ÆÁö¹Ç·Î ÀüüÀûÀÎ ¼Óµµ°¡ ¶³¾îÁö±â ¸¶·ÃÀÌ´Ù. GDI+µµ ¿¹¿Ü°¡ ¾Æ´Ï¾î¼­ GDIº¸´Ù´Â °´°üÀûÀ¸·Î ÈξÀ ´õ ´À¸®´Ù. µÎ ¶óÀ̺귯¸®ÀÇ ¼ÓµµÂ÷°¡ ¾ó¸¶³ª ³ª´ÂÁö ¿¹Á¦¸¦ ¸¸µé¾î¼­ Á÷Á¢ Å×½ºÆ®ÇØ º¸ÀÚ. ´ÙÀ½ ¿¹Á¦´Â ³­¼ö·Î ¼±ÅÃÇÑ »ö»óÀ¸·Î Ÿ¿ø ¸¸ °³¸¦ ±×¸®´Âµ¥ Ãâ·Â°ú ¹«°üÇÑ ÄÚµå´Â °¡±ÞÀû ¹èÁ¦ÇÏ¿© °øÆòÇÏ°Ô ¼Óµµ ÃøÁ¤À» Çß´Ù.

 

¿¹ Á¦ : GdiSpeed

#define random(n) (rand()%n)

void SpeedTestGdi()

{

     HDC hdc;

     HBRUSH hBrush,hOldBrush;

     int i;

     int x,y,w,h;

 

     hdc=GetDC(hWndMain);

     SelectObject(hdc,GetStockObject(NULL_PEN));

     for (i=0;i<10000;i++) {

          hBrush=CreateSolidBrush(RGB(random(256),random(256),random(256)));

          hOldBrush=(HBRUSH)SelectObject(hdc,hBrush);

          x=random(640);

          y=random(480);

          w=random(150)+50;

          h=random(150)+50;

          Ellipse(hdc,x,y,x+w,y+h);

          DeleteObject(SelectObject(hdc,hOldBrush));

     }

     ReleaseDC(hWndMain,hdc);

}

 

void SpeedTestGdiPlus()

{

     Graphics G(hWndMain);

     SolidBrush S(Color(0,0,0));

     int i;

     int x,y,w,h;

 

     for (i=0;i<10000;i++) {

          S.SetColor(Color(random(256),random(256),random(256)));

          x=random(640);

          y=random(480);

          w=random(150)+50;

          h=random(150)+50;

          G.FillEllipse(&S,x,y,w,h);

     }

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HDC hdc;

     PAINTSTRUCT ps;

     DWORD st;

     TCHAR str[128];

     TCHAR *Mes=TEXT("¿ÞÂÊ Å¬¸¯ : GDI ±×¸®±â, ¿À¸¥ÂÊ Å¬¸¯ : GDI+ ±×¸®±â");

 

     switch(iMessage) {

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_LBUTTONDOWN:

          st=GetTickCount();

          SpeedTestGdi();

          wsprintf(str,TEXT("¼Ò¿ä ½Ã°£ = %dƽ"),GetTickCount()-st);

          SetWindowText(hWnd,str);

          return 0;

     case WM_RBUTTONDOWN:

          st=GetTickCount();

          SpeedTestGdiPlus();

          wsprintf(str,TEXT("¼Ò¿ä ½Ã°£ = %dƽ"),GetTickCount()-st);

          SetWindowText(hWnd,str);

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          TextOut(hdc,10,700,Mes,lstrlen(Mes));

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

¸¶¿ì½º ÁÂ¿ì ¹öÆ°À» ´©¸£¸é GDI¿Í GDI+·Î ¶È°°Àº Ÿ¿ø ¸¸°³¸¦ ±×¸®´Â µ¿ÀÛÀ» °¢°¢ ¼öÇàÇÏ¸ç °æ°ú ½Ã°£À» ŸÀÌƲ ¹Ù¿¡ Ãâ·ÂÇß´Ù.

½Ã½ºÅÛ¸¶´Ù °á°ú´Â Á¶±Ý¾¿ ´Ù¸£°Ô ³ª¿À°ÚÁö¸¸ GDI°¡ GDI+º¸´Ù ÀÛ°Ô´Â 5¹è ¸¹°Ô´Â 10¹è Á¤µµ ´õ ºü¸£´Ù. Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¿© ºê·¯½ÃÀÇ »ö»ó¿¡ ¾ËÆĸ¦ Àû¿ëÇÏ¿© ¹ÝÅõ¸íÀ¸·Î Ãâ·ÂÇϵµ·Ï ¼öÁ¤ÇØ º¸ÀÚ. ¿ö³« ´À¸®±â ¶§¹®¿¡ ȸ¼öµµ 1000¹øÀ¸·Î ÁÙ¿´´Ù.

 

void SpeedTestGdiPlus()

{

     ....

     for (i=0;i<1000;i++) {

          S.SetColor(128,Color(random(256),random(256),random(256)));

 

Á» ´À¸° ½Ã½ºÅÛ¿¡¼­´Â Ÿ¿øÀ» ±×¸®´Â ¸ð½ÀÀÌ ´«¿¡ º¸ÀÏ Á¤µµ·Î ´À¸®´Ù. °è»êÇØ º¸¸é ¹ÝÅõ¸í Ãâ·Â ±â´ÉÀÌ ¾ø´Â GDIº¸´Ù ´ë·« 700¹è Á¤µµ ´õ ´À¸° ¼ÀÀÌ´Ù. ¹ÝÅõ¸í 󸮸¦ Çϱâ À§Çؼ­´Â È­¸é¿¡ ÀÌ¹Ì Ãâ·ÂµÈ Á¡À» ÀÐ¾î ³í¸® ¿¬»êÇÑ °á°ú¸¦ ´Ù½Ã ±â·ÏÇØ¾ß ÇϹǷΠ´À¸± ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ ¿Ü¿¡ ¿©·¯ °¡Áö Å×½ºÆ®¸¦ ÇØ º¸¸é GDI+°¡ GDIº¸´Ù Àû¾îµµ ¼ö ¹è Á¤µµ´Â ´õ ´À¸®´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

¹°·Ð ¿äÁòÀº ÄÄÇ»ÅÍ¿Í ±×·¡ÇÈ Ä«µåÀÇ ¼º´ÉÀÌ ÁÁ¾ÆÁ®¼­ ¼Óµµ´Â Áß¿äÇÑ °í·Á ´ë»óÀÌ ¾Æ´Ñ °æ¿ìµµ ¸¹´Ù. ¸î ½Ê %³ª µÎ ¹è Á¤µµÀÇ ¼Óµµ Â÷ÀÌ´Â Çϵå¿þ¾îÀÇ Áö¿øÀ¸·Î ¹«½ÃµÉ ¼öµµ ÀÖ°í ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀÌ Ãâ·Â ¼Óµµ¸¸À¸·Î Æò°¡µÇ´Â °Íµµ ¾Æ´Ï¹Ç·Î Áß¿äÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ µÎ ¶óÀ̺귯¸®ÀÇ °æ¿ì ¼Óµµ Â÷ÀÌ°¡ ³Ê¹« È®¿¬ÇÏ°Ô µå·¯³ª±â ¶§¹®¿¡ ¼Óµµ°¡ Áß¿äÇÑ ÇÁ·Î±×·¥¿¡¼­´Â GDI+ÀÇ Àü°Ý ä¿ëÀ» ½É°¢ÇÏ°Ô °í·ÁÇØ ºÁ¾ß ÇÒ Á¤µµÀÌ´Ù.

±×·¸´Ù°í Çؼ­ ¼Óµµ¸¦ À§ÇØ GDI+¸¦ ÀϺη¯ ÇÇÇÒ ÇÊ¿ä±îÁö´Â ¾ø´Ù. GDI+´Â GDI°¡ ÇÒ ¼ö ¾ø´Â ¸¹Àº ÀϵéÀ» ÇÒ ¼ö ÀÖÀ¸¸ç À̹ÌÁö Ãâ·Â°°ÀÌ ¿ø·¡ºÎÅÍ ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷Àº µÎ ¶óÀ̺귯¸®ÀÇ ¼ÓµµÂ÷°¡ ½ÉÇÏÁö ¾ÊÀ¸¹Ç·Î Ãâ·Â Ç°ÁúÀ» Áß¿ä½ÃÇÑ´Ù¸é GDI+¸¦ Àû±Ø »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÇàÈ÷ µÎ ¶óÀ̺귯¸®´Â ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼­ ¹èŸÀûÀ¸·Î ¼±ÅõǾî¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ÇÊ¿äÇÒ ¶§¸¸ GDI+¸¦ »ç¿ëÇÏ´Â ¹æ¹ýµµ ½â ÁÁÀº ¼±ÅÃÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿ä¾àÇÏÀÚ¸é ¼Óµµ°¡ ÇÊ¿äÇÒ ¶§´Â GDI¸¦, Ç°ÁúÀÌ Áß¿äÇÒ ¶§´Â GDI+¸¦ »ç¿ëÇÏ¸é µÈ´Ù.

³ª.Ŭ·¡½º °èÃþ

GDI+´Â C++ Ŭ·¡½ºµéÀÇ ÁýÇÕÀε¥ ÃÖ»óÀ§ÀÇ ·çÆ® Ŭ·¡½º´Â GdiplusBase Ŭ·¡½ºÀÌ´Ù. MFC ¶óÀ̺귯¸®¿¡ ºñÀ¯ÇÑ´Ù¸é CObject¿¡ ÇØ´çÇϴ Ŭ·¡½º¶ó°í ÇÒ ¼ö ÀÖ´Ù. GDI+ÀÇ ¸ðµç Ŭ·¡½ºµéÀº ÀÌ Å¬·¡½º·ÎºÎÅÍ ÆÄ»ýµÈ´Ù. ¸Þ¸ð¸® ÇÒ´ç°ú ÇØÁ¦ ±â´ÉÀ» À§ÇÑ new, delete ¿¬»êÀÚ¸¸ Á¦°øÇÏ¸ç ±¸Ã¼ÀûÀÎ µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö´Â Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù. ¸Þ¸ð¸® °ü¸®¸¦ À§ÇÑ ³»ºÎÀûÀΠŬ·¡½º¿¡ ºÒ°úÇϹǷΠGdiplusBaseÇüÀÇ °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÒ ÇÊ¿ä´Â ¾ø´Ù.

GdiplusBase ·çÆ® Ŭ·¡½º ¾Æ·¡¿¡ ¿©·¯ °¡Áö Ŭ·¡½ºµéÀÌ °èÃþÀ» ÀÌ·ê °ÍÀÓÀº ½±°Ô ÁüÀÛµÉ °ÍÀÌ´Ù. ±×·¯³ª ´ëºÎºÐÀÇ Å¬·¡½º´Â GdiplusBaseÀÇ 1Â÷ ÆÄ»ý Ŭ·¡½ºÀÌ¸ç ±í¾îµµ 2Â÷ ÀÌ»ó ÆÄ»ýµÇ´Â Á¤µµ¿¡ ºÒ°úÇϱ⠶§¹®¿¡ GDI+ÀÇ Å¬·¡½º °èÃþ ±¸Á¶´Â ±×¸® º¹ÀâÇÏÁö ¾Ê´Ù. °Ô´Ù°¡ ·çÆ® Ŭ·¡½º°¡ ±×´ÙÁö Áß¿äÇÑ ¿ªÇÒÀ» ÇÏ´Â °Íµµ ¾Æ´Ï¹Ç·Î »ó¼Ó °ü°è¿¡ ´ëÇؼ­´Â ½Å°æ¾²Áö ¾Ê¾Æµµ »ó°ü¾øÀ¸¸ç ¸ðµç Ŭ·¡½º°¡ ´Üµ¶À¸·Î Á¸ÀçÇÑ´Ù°í »ý°¢Çصµ ¹«¹æÇÑ Á¤µµ´Ù. MFC¿¡ ºñÇϸé ÈξÀ ´õ ´Ü¼øÇÑ ±¸Á¶·Î µÇ¾î ÀÖÀ¸¸ç °èÃþÀÌ °ÅÀÇ ¾ø´Â ¼ÀÀÌ´Ù.

GDI+ÀÇ °¡Àå Áß¿äÇÏ°íµµ ±âº»ÀÌ µÇ´Â Ŭ·¡½º´Â Graphics Ŭ·¡½ºÀÌ´Ù. GdiplusBase·ÎºÎÅÍ ÆÄ»ýµÇ¸ç ´ëºÎºÐÀÇ ±×¸®±â ÇÔ¼öµéÀÌ Graphics Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î Á¤ÀǵǾî ÀÖ´Ù. ±×·¡¼­ Ãâ·ÂÀ» ÇÏ·Á¸é Graphics Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¸ÕÀú ¸¸µé¾î¾ß ÇÑ´Ù. ±×¸®±â¿¡ °ü·ÃµÈ ¸â¹ö ÇÔ¼öµéÀº Àá½Ã ÈĺÎÅÍ ¼ø¼­´ë·Î ¾Ë¾Æº¼ °ÍÀÌ°í ÀÏ´Ü »ý¼ºÀÚºÎÅÍ ¾Ë¾Æº¸ÀÚ. ´ÙÀ½ 4°¡ÁöÀÇ »ý¼ºÀÚ°¡ Á¤ÀǵǾî ÀÖ´Ù.

 

Graphics(HDC hdc);

Graphics(HWND hwnd, BOOL icm);

Graphics(HDC hdc, HANDLE hdevice);

Graphics(Image* image);

 

ÁÖ·Î ¾ÕÀÇ µÎ »ý¼ºÀÚ¸¦ »ç¿ëÇϴµ¥ ù ¹ø° »ý¼ºÀÚ´Â hdc¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ÀÌ DCÀÇ ¿µ¿ª¿¡ ±×¸®±â¸¦ ÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇÑ´Ù. DC·ÎºÎÅÍ Graphics °´Ã¼¸¦ ±¸ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ »ý¼ºÀÚ°¡ GDI¿Í GDI+ÀÇ °¡±³ ¿ªÇÒÀ» ÇÏ´Â ¼ÀÀÌ´Ù. WM_PAINT ¸Þ½ÃÁö¿¡¼­ GDI+·Î Ãâ·ÂÀ» ÇÏ·Á¸é BeginPaint·Î DC ÇÚµéÀ» ¾ò°í ÀÌ DC·Î ºÎÅÍ Graphics °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ GraphicsÀÇ Ãâ·Â ¸â¹ö ÇÔ¼öµéÀ» È£ÃâÇÏ¸é µÈ´Ù.

 

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          Graphics G(hdc);

          G.¼± ±×¸®±â();

          G.µ¿±×¶ó¹Ì ±×¸®±â();

          G.ºñÆ®¸Ê Ãâ·Â();

          ...

          EndPaint(hWnd, &ps);

          return 0;

 

µÎ ¹ø° »ý¼ºÀÚ´Â À©µµ¿ì ÇÚµéÀ» Àü´Þ¹Þ¾Æ ÀÌ À©µµ¿ìÀÇ ÀÛ¾÷ ¿µ¿ª¿¡ ±×¸®±â¸¦ ÇÒ ¼ö ÀÖ´Â Graphics °´Ã¼¸¦ »ý¼ºÇÑ´Ù. WM_PAINT°¡ ¾Æ´Ñ ÀÓÀÇÀÇ ¸Þ½ÃÁö¿¡¼­ Ãâ·ÂÇØ¾ß ÇÑ´Ù¸é ÀÌ »ý¼ºÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù. icm Àμö´Â »ö»ó Á¶Á¤ ±â´ÉÀÇ »ç¿ë À¯¹«¸¦ ÁöÁ¤Çϴµ¥ »ý·«ÇÒ °æ¿ì µðÆúÆ®ÀÎ FALSE°¡ Àû¿ëµÈ´Ù. º¸Åë ÀÌ Àμö´Â ÁÖÁö ¾Ê´Â´Ù. ³ª¸ÓÁö »ý¼ºÀÚ´Â À̹ÌÁö·Î ´õºí ¹öÆÛ¸µÀ» Çϰųª ÇÁ¸°ÅÍ°°Àº ƯÁ¤ ÀåÄ¡·Î Ãâ·ÂÇÒ ¶§ »ç¿ëµÈ´Ù.

ÀϺΠ¸î °¡Áö ÇÔ¼ö¸¦ Á¦¿ÜÇÏ°í GDI+ÀÇ ¸ðµç ÇÔ¼öµéÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Â Status ¿­°ÅÇüÀ¸·Î ½ÇÇà °á°ú¸¦ ¸®ÅÏÇÑ´Ù.

 

typedef enum {

    Ok = 0,

    GenericError = 1,

    InvalidParameter = 2,

    OutOfMemory = 3,

    ObjectBusy = 4,

    InsufficientBuffer = 5,

    NotImplemented = 6,

    Win32Error = 7,

    WrongState = 8,

    Aborted = 9,

    FileNotFound = 10,

    ValueOverflow = 11,

    AccessDenied = 12,

    UnknownImageFormat = 13,

    FontFamilyNotFound = 14,

    FontStyleNotFound = 15,

    NotTrueTypeFont = 16,

    UnsupportedGdiplusVersion = 17,

    GdiplusNotInitialized = 18,

    PropertyNotFound = 19,

    PropertyNotSupported = 20,

    ProfileNotFound = 21

} Status;

 

¼ö ¸¹Àº ¿¡·¯ ÄÚµåµéÀÌ ¿­°Å »ó¼ö·Î Á¤ÀǵǾî Àִµ¥ ¾Æ¹« Å»¾øÀÌ µ¿ÀÛÀ» Àß ¼öÇàÇßÀ¸¸é Ok¸¦ ¸®ÅÏÇÑ´Ù. O´Â ´ë¹®ÀÚ°í k´Â ¼Ò¹®ÀÚÀÌ´Ù. OK°¡ ¾Æ´ÔÀ» ÁÖÀÇÇÏÀÚ. ¿¡·¯°¡ ¹ß»ýÇßÀ¸¸é ¿¡·¯ ¿øÀο¡ µû¶ó ÀûÀýÇÑ ¿­°Å »ó¼ö¸¦ ¸®ÅÏÇϴµ¥ ÀÌ ¸®ÅÏ°ªÀ» ÀÐ¾î º¸¸é ¾î¶² ¹®Á¦°¡ ÀÖ´ÂÁö ¾Ë ¼ö ÀÖ´Ù. ¿­°Å »ó¼öÀÇ À̸§ÀÌ ¿µ¹®À¸·Î ¾ÆÁÖ ½±°Ô ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î µû·Î ¼³¸íÀº ÇÏÁö ¾Ê¾Æµµ Àǹ̸¦ ½±°Ô ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÀÀ¿ë ÇÁ·Î±×·¥Àº ÇÔ¼öÀÇ È£Ãâ °á°ú¸¦ º¸°í ÀûÀýÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇ쵂 ´ë°³ÀÇ °æ¿ì´Â OkÀÎÁö ¾Æ´ÑÁö¸¸ Á¡°ËÇÏ¿© ¼º°ø ¿©ºÎ¿¡¸¸ °ü½ÉÀ» °¡Áú °ÍÀÌ´Ù. ¿¹Á¦ ¼öÁØ¿¡¼­´Â °£·«ÇÔÀ» À§ÇØ OkÀÎÁöµµ º¸Áö ¾ÊÁö¸¸ ¿¡·¯°¡ ¹ß»ýÇÒ ¼ÒÁö°¡ ÀÖ´Â ÇÔ¼ö¿¡ ´ëÇؼ­´Â °¡±ÞÀûÀÌ¸é ¸®ÅÏ°ªÀ» ²À Á¡°ËÇØ º¸¾Æ¾ß ÇÑ´Ù.

ÇÔ¼öÀÇ ¸®ÅÏ°ªÀ» ¹Þ´Â ´ë½Å ÃÖÈÄÀÇ ½ÇÆÐÇÑ ¿¡·¯ Äڵ带 ¾Ë°í ½ÍÀ» ¶§´Â GetLastStatus ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼ö´Â °¡Àå ÃÖ±ÙÀÇ ¿¡·¯ Äڵ带 Á¶»çÇϴµ¥ ¸¸¾à ¸ðµç ÇÔ¼ö È£ÃâÀÌ ¼º°øÀûÀ̾ú´Ù¸é Ok¸¦ ¸®ÅÏÇÑ´Ù. ÇÔ¼öÀÇ °æ¿ì´Â È£Ãâ Áï½Ã ¿¡·¯ Äڵ带 ¸®ÅÏÇϹǷΠ±»ÀÌ GetLastStatus·Î ¿¡·¯ Äڵ带 Á¶»çÇÒ ÇÊ¿ä°¡ ¾øÁö¸¸ ¸®ÅÏ°ªÀÇ °³³äÀÌ ¾ø´Â »ý¼ºÀÚÀÇ ¿¡·¯ ÄÚµå´Â ¹Ýµå½Ã ÀÌ ÇÔ¼ö·Î Á¶»çÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â Image Ŭ·¡½º »ý¼ºÀÚÀÇ ¼º°ø ¿©ºÎ¸¦ Á¶»çÇÑ´Ù.

 

Image MyImage(L"prettygirl.jpg");

if (MyImage.GetLastStatus() != Ok) {

     MessageBox(hWndMain,TEXT("À̹ÌÁö ÆÄÀÏÀÌ ¾ø¾î ÀÐÀ» ¼ö°¡ ¾ø´Ù."),

          TEXT("°øºÎ³ª ÇØ"),MB_OK);

     return;

}

 

Image Ŭ·¡½º´Â ÀаíÀÚ ÇÏ´Â ±×¸² ÆÄÀÏÀÇ °æ·Î¸¦ »ý¼ºÀÚ·Î ÀԷ¹޴µ¥ ÆÄÀÏÀº ¿©·¯ °¡Áö ÀÌÀ¯(ÆÄÀÏ ¾øÀ½, °øÀ¯ À§¹Ý, ¹èµå ¼½ÅÍ)·Î ÀÐÁö ¸øÇÏ´Â °æ¿ì°¡ ¸¹À¸¹Ç·Î ¹Ýµå½Ã ¿¡·¯ 󸮸¦ ÇØ¾ß ÇÑ´Ù. ÇÏÁö¸¸ ÀÚµ¿À¸·Î È£ÃâµÇ´Â »ý¼ºÀÚ´Â ¼º°ø ¿©ºÎ¸¦ ¸®ÅÏÇÒ ¼ö´ÜÀÌ ¾ø´Ù. ±×·¡¼­ ÀÏ´Ü °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ GetLastStatus ÇÔ¼ö·Î ¼º°ø ¿©ºÎ¸¦ Á¶»çÇØ¾ß ÇÑ´Ù.

GDI+´Â ¿É¼ÇÀ̳ª »óÅ ÁöÁ¤À» À§ÇØ »ó¼ö¸¦ Á÷Á¢ ¾²Áö ¾Ê°í ¿­°ÅÇüÀ» ¸¹ÀÌ »ç¿ëÇϴµ¥ ÀÌ ¶óÀ̺귯¸®ÀÇ ¿­°ÅÇü Àüü¸¦ º¸°í ½ÍÀ¸¸é GdiPlusEnums.h Çì´õ ÆÄÀÏÀ» ¿­¾î º¸¸é µÈ´Ù. ¿­°ÅÇüÀº ¼ýÀÚ ´ë½Å ¿­°Å »ó¼ö À̸§À» »ç¿ëÇϹǷΠ±â¾ïÇϱ⠽±°í Äڵ带 Àб⠽±°Ô ÇÏ´Â ÀåÁ¡ÀÌ Àִµ¥ GDI+´Â ÀÌ·± ¿­°ÅÇüÀÇ ÀåÁ¡À» Àû±ØÀûÀ¸·Î È°¿ëÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. ´ÙÀ½Àº GDI+°¡ ´Ù·ê ¼ö ÀÖ´Â ´ÜÀ§¿¡ ´ëÇÑ Unit ¿­°ÅÇüÀÌ´Ù.

 

typedef enum {

    UnitWorld = 0,

    UnitDisplay = 1,

    UnitPixel = 2,

    UnitPoint = 3,

    UnitInch = 4,

    UnitDocument = 5,

    UnitMillimeter = 6

} Unit;

 

Çȼ¿, Æ÷ÀÎÆ®, ÀÎÄ¡, ¹Ð¸®¹ÌÅÍ µîµîÀÇ ´ÜÀ§¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. »ç¿ëÇÏ°íÀÚ ÇÏ´Â ¿­°ÅÇü¿¡ ´ëÇÑ µµ¿ò¸»Àº ÀÌ ¿­°ÅÇüÀ» »ç¿ëÇÏ´Â ÇÔ¼öÀÇ µµ¿ò¸»¿¡¼­ ¸µÅ©¸¦ ÅëÇØ Áï½Ã À̵¿ÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù. ¿­°ÅÇüÀÇ À̸§ÀÌ ³Ê¹« ±æ¾î ŸÀÌÇÁÄ¡±â ½È´Ù¸é ÇÊ¿äÇÒ ¶§¸¶´Ù µµ¿ò¸»¿¡¼­ º¹»çÇØ ¿À¸é µÈ´Ù.

´Ù.±âº» ŸÀÔ

GDI+ÀÇ ÇÔ¼öµéÀº Á¤¼ö, ½Ç¼öÇü¿¡ ´ëÇØ C¾ð¾îÀÇ int, float Å°¿öµå¸¦ Á÷Á¢ »ç¿ëÇÏÁö ¾ÊÀ¸¸ç INT, REAL µîÀÇ Áß°£ ŸÀÔÀ» »ç¿ëÇÑ´Ù. ÀÌ·± ½ÄÀ¸·Î Áß°£ ŸÀÔÀ» Á¤ÀÇÇؼ­ »ç¿ëÇÏ´Â ÀÌÀ¯´Â È®À强°ú À̽ļºÀ» À§ÇÑ °ÍÀÓÀº µÎ¸»Çϸé ÀܼҸ®´Ù. Çì´õ ÆÄÀÏÀ» º¸¸é INT´Â int·Î, REALÀº float·Î Á¤ÀǵǾî ÀÖÁö¸¸ ÀÌ Á¤ÀÇ´Â Àå·¡¿¡ ¹Ù²ð ¼öµµ ÀÖ´Ù. ±×·¡¼­ GDI+¸¦ »ç¿ëÇÒ ¶§ Á¤¼öÇüÀº INT·Î ½Ç¼öÇüÀº REAL·Î »ç¿ëÇØ¾ß ÇÑ´Ù.

È­¸é»óÀÇ ÇÑ ÁöÁ¡Àº (x, y) µÎ ÃàÀÇ Á¶ÇÕÀ¸·Î Ç¥ÇöÇϴµ¥ GDI+´Â ÁÂÇ¥ Ç¥ÇöÀ» À§ÇØ Point Ŭ·¡½º¸¦ »ç¿ëÇÑ´Ù. GDI°¡ POINT ±¸Á¶Ã¼¸¦ »ç¿ëÇÏ´Â °Í°ú °³³äÀûÀ¸·Î À¯»çÇÏÁö¸¸ Point´Â Ŭ·¡½ºÀ̹ǷΠ¸â¹ö ÇÔ¼ö¸¦ °¡Áø´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ÁÂÇ¥ÀÇ ½ÇÁ¦°ªÀ» °¡Áö´Â X, Y ¸â¹öµéÀº public ¼Ó¼ºÀ¸·Î ¼±¾ðµÇ¾î ÀÖÀ¸¹Ç·Î ¿ÜºÎ¿¡¼­µµ Á÷Á¢ ÀÐ°í ¾µ ¼ö ÀÖ´Ù. Point Ŭ·¡½ºÀÇ »ý¼ºÀÚ´Â ´ÙÀ½ 4°¡Áö°¡ Á¤ÀǵǾî ÀÖ´Ù.

 

Point(VOID);

Point(INT x, INT y);

Point(const Point &point);

Point(const Size &size);

 

°¢°¢ µðÆúÆ® »ý¼ºÀÚ, (x, y)ÁÂÇ¥¸¦ Àü´Þ¹Þ´Â »ý¼ºÀÚ, º¹»ç »ý¼ºÀÚ, Size °´Ã¼ÀÇ º¯È¯ »ý¼ºÀÚ µîÀÌ´Ù. ÀÌ ¿Ü¿¡ ÁÂÇ¥¸¦ °ü¸®ÇÒ ¼ö ÀÖ´Â ¸î °¡Áö ¸â¹ö ÇÔ¼öµéÀÌ ´õ Á¤ÀǵǾî ÀÖ´Ù. ¿øÇü¸¸ ºÁµµ ¾î¶² µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼öÀÎÁö¸¦ ½±°Ô ÃßÃøÇÒ ¼ö ÀÖ´Ù.

 

BOOL Equals(const Point& point);

Point operator+(const Point &point);

Point operator-(const Point &point);

 

Equals´Â ÁÂÇ¥°£ÀÇ »óµî ºñ±³¸¦ ÇÏ¸ç µÎ ÁÂÇ¥¸¦ °¡°¨ ¿¬»êÇÒ ¼ö ÀÖ´Â +, - ¿¬»êÀÚµµ Á¤ÀǵǾî ÀÖ´Ù. Point¿Ü¿¡ ½Ç¼öÇüÀÇ ÁÂÇ¥¸¦ ´Ù·ê ¼ö ÀÖ´Â PointF Ŭ·¡½ºµµ Á¤ÀǵǾî Àִµ¥ X, Y ¸â¹ö°¡ REAL ŸÀÔÀ̶ó´Â °Í¸¸ ´Ù¸£´Ù. GDI+´Â Çȼ¿ ¿Ü¿¡µµ ´Ù¾çÇÑ ³í¸® ÁÂÇ¥¸¦ ´Ù·ê ¼ö Àֱ⠶§¹®¿¡ ½Ç¼ö·Î ÁÂÇ¥¸¦ ÁöÁ¤Çϱ⵵ ÇÑ´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­´Â Pointº¸´Ù PointF¸¦ ´õ ¸¹ÀÌ »ç¿ëÇϴµ¥ °­Á¿¡¼­´Â ÆíÀÇ»ó Point ŸÀÔÀ¸·Î ÁÖ·Î ¿¹Á¦¸¦ ¸¸µé¾ú´Ù.

Point Ŭ·¡½º´Â Á¤ÀÇ°¡ ¹«Ã´ °£´ÜÇÑ ÆíÀε¥ ´õ »ó¼¼ÇÑ Á¤º¸´Â µµ¿ò¸»¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù. ±×·¯³ª µµ¿ò¸»º¸´Ù ´õ È®½ÇÇÑ Á¤º¸´Â Çì´õ ÆÄÀÏÀ» Á÷Á¢ ¿­¾î º¸´Â °ÍÀÌ´Ù. GdiPlusTypes.h Çì´õ ÆÄÀÏ¿¡ ÀÌ Å¬·¡½ºÀÇ ¼±¾ð°ú ¸â¹ö ÇÔ¼ö Á¤ÀDZîÁö ¸ðµÎ ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î º»Ã¼¸¦ Á÷Á¢ ±¸°æÇØ º¸µµ·Ï ÇÏÀÚ.

Size Ŭ·¡½º´Â Å©±â¸¦ Ç¥ÇöÇϴµ¥ °ø°³µÈ(public) Width, Height ¸â¹ö¿Í »ý¼ºÀÚ, »óµî ¿¬»êÀ» ÇÏ´Â Equal, °¡°¨ ¿¬»êÀÚ µîÀÇ Á¤ÀǵǾî ÀÖ´Ù. ½Ç¼öÇüÀÇ Å©±â¸¦ Ç¥ÇöÇÏ´Â SizeF¶ó´Â Ŭ·¡½ºµµ °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. ÀÌ·± ½ÄÀ¸·Î GDI+´Â Ŭ·¡½º, ÇÔ¼ö °¢°¢¿¡ ´ëÇØ Á¤¼öÇü ¹öÀü°ú ½Ç¼öÇü ¹öÀüÀÌ µÎ ¹ú¾¿ Á¦°øµÈ´Ù. ¸â¹öÀÇ Å¸ÀÔÀÌ Á¤¼ö°¡ ¾Æ´Ñ ½Ç¼ö¶ó´Â °Í¿Ü¿¡ ±â´ÉÀûÀÎ Â÷ÀÌÁ¡Àº ¾øÀ¸¹Ç·Î ÇÑÂʸ¸ ¾Ë¸é ³ª¸ÓÁö ÇÑÂÊÀº µû·Î °øºÎÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

Rect Ŭ·¡½º´Â »ç°¢ ¿µ¿ªÀ» Ç¥ÇöÇϴ Ŭ·¡½ºÀε¥ GDIÀÇ RECT ±¸Á¶Ã¼¿¡ ´ëÀÀµÈ´Ù. ±×·¯³ª »ç°¢¿µ¿ªÀ» Ç¥ÇöÇÏ´Â ¹æ¹ýÀÌ RECT ±¸Á¶Ã¼¿Í´Â »ó´çÈ÷ ´Ù¸£¹Ç·Î ÁÖÀÇÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. RECT ±¸Á¶Ã¼´Â LTRB Çü½ÄÀ¸·Î Á»ó´Ü, ¿ìÇÏ´Ü ÁÂÇ¥·Î ¿µ¿ªÀ» ÁöÁ¤ÇÏÁö¸¸ Rect Ŭ·¡½º´Â X, Y Á»ó´Ü ÁÂÇ¥¿Í Æø, ³ôÀÌÀÎ Width, Height¸¦ ¸â¹ö·Î °¡Áø´Ù. ±×·¡¼­ ¶È°°Àº (10,20)-(150,100)ÀÇ ¿µ¿ªÀ» Ç¥ÇöÇÏ´Â ¹æ½ÄÀÌ ´Ù¸£´Ù.

RECT´Â Ç¥ÇöÇÏ°í ½ÍÀº ¿µ¿ªÀÇ ´ë°¢¼± ²ÀÁöÁ¡ ÁÂÇ¥¸¦ ÁöÁ¤(LTRB ¹æ½Ä)ÇÏÁö¸¸ Rect´Â Á»ó´Ü¸¸ ÁÂÇ¥¸¦ ÁöÁ¤ÇÏ°í Æø°ú ³ôÀÌ·Î ¿ìÇÏ´Ü Á¡À» ³ªÅ¸³½´Ù(XYWH ¹æ½Ä). ¾ÆÁÖ ´Ü¼øÇÑ Â÷ÀÌÀÌÁö¸¸ ½Ç¹« ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÌ µÎ ¹æ½ÄÀÌ ¾öû³ª°Ô Çò°¥¸®¹Ç·Î ÁÖÀÇÇϱ⠹ٶõ´Ù. ½Ç¼ö °ø°£¿¡¼­ÀÇ »ç°¢ ¿µ¿ªÀ» Ç¥ÇöÇÏ´Â RectF Ŭ·¡½ºµµ ¹°·Ð Á¦°øµÈ´Ù. »ý¼ºÀÚ´Â ´ÙÀ½ ¼¼ °¡Áö°¡ ÁغñµÇ¾î ÀÖ´Ù.

 

Rect(VOID);

Rect(const Point &location, const Size &size);

Rect(INT x, INT y, INT width, INT height);

 

µðÆúÆ® »ý¼ºÀÚ´Â ¸ðµç ¸â¹ö¸¦ 0À¸·Î ÃʱâÈ­ÇÏ¿© ºó »ç°¢ ¿µ¿ªÀ» »ý¼ºÇÑ´Ù. µÎ ¹ø° »ý¼ºÀÚ´Â Á»ó´Ü ÁÂÇ¥ Point¿Í Å©±â Size¸¦ Àμö·Î Àü´Þ¹Þ¾Æ »ç°¢ ¿µ¿ªÀ» ÃʱâÈ­ÇÏ¸ç ¼¼ ¹ø° »ý¼ºÀÚ´Â ÁÂÇ¥¿Í Å©±â¸¦ ¸ðµÎ INTÇüÀ¸·Î Àü´Þ¹Þ´Â´Ù. »ç°¢¿µ¿ªÀ» LTRB ¹æ½ÄÀ¸·Î Ç¥ÇöÇÏÁö ¾ÊÀ¸¹Ç·Î µÎ Á¡À» Àü´Þ¹Þ´Â Rect(Point, Point) »ý¼ºÀÚ°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ½À» À¯ÀÇÇϵµ·Ï ÇÏÀÚ.

»ç°¢ ¿µ¿ªÀ» Ç¥ÇöÇÏ´Â Rect Ŭ·¡½º´Â Point³ª Size¿¡ ºñÇؼ­´Â ÈξÀ ´õ º¹ÀâÇÑ Á¤º¸¸¦ Ç¥ÇöÇÑ´Ù. ¶ÇÇÑ »ç°¢ ¿µ¿ª¿¡ ´ëÇÑ Á¤º¸¸¦ ¿ä±¸ÇÏ´Â ¸¹Àº ÇÔ¼öµéÀÌ ÀÖ°í ´Ù¾çÇÑ ¿¬»êÀÌ ÇÊ¿äÇÏ´Ù. ±×·¡¼­ Rect Ŭ·¡½º´Â Point³ª Size¿¡ ºñÇؼ­´Â ÈξÀ ´õ ¸¹Àº ¸â¹ö ÇÔ¼öµéÀ» °Å´À¸®°í ÀÖ´Ù. ´ÙÀ½Àº Rect Ŭ·¡½ºÀÇ Àüü ¸â¹ö ÇÔ¼ö ¸ñ·Ï°ú °£´ÜÇÑ ¼³¸íÀÌ´Ù. MFCÀÇ CRect Ŭ·¡½ºÀÇ ¸â¹ö¿Íµµ °ÅÀÇ À¯»çÇÏ´Ù.

 

¸â¹ö ÇÔ¼ö

¼³¸í

Rect *Clone(VOID) const;

»õ·Î¿î »çº»À» »ý¼ºÇÑ´Ù.

BOOL Equals(const Rect& rect) const;

µÎ »ç°¢ ¿µ¿ªÀÌ °°ÀºÁö °Ë»çÇÑ´Ù.

INT GetLeft(VOID) const;

return X;

INT GetTop(VOID) const;

return Y;

INT GetRight(VOID) const;

return X+Width;

INT GetBottom(VOID) const;

return Y+Height;

VOID GetBounds(Rect* rect) const;

Àμö·Î Àü´ÞÇÑ Rect¿¡ ÀÌ °´Ã¼¸¦ ´ëÀÔÇÑ´Ù.

VOID GetLocation(Point* point) const;

Á»ó´Ü ÁÂÇ¥¸¦ Á¶»çÇÑ´Ù.

VOID GetSize(Size* size) const;

Å©±â¸¦ Á¶»çÇÑ´Ù.

VOID Offset(INT dx, INT dy);

dx, dy¸¸Å­ »ç°¢ ¿µ¿ªÀ» À̵¿½ÃŲ´Ù.

VOID Offset(const Point& point);

VOID Inflate(INT dx, INT dy);

dx, dy¸¸Å­ »ç°¢ ¿µ¿ªÀ» È®´ëÇÑ´Ù.

VOID Inflate(const Point& point);

BOOL Contains(const Point& pt);

ÁöÁ¤ÇÑ ÁÂÇ¥³ª »ç°¢ ¿µ¿ªÀÌ ÇöÀç »ç°¢ ¿µ¿ª¿¡ ¿ÏÀüÈ÷ Æ÷ÇԵǴÂÁö Á¶»çÇÑ´Ù.

BOOL Contains(Rect& rect);

BOOL Contains(INT x, INT y);

BOOL Intersect(Rect& c, const Rect& a, const Rect& b);

µÎ »ç°¢ ¿µ¿ªÀÇ ±³ÁýÇÕ ¿µ¿ªÀ» ±¸ÇÑ´Ù.

BOOL Intersect(const Rect& rect);

BOOL IntersectsWith(const Rect& rect) const;

µÎ »ç°¢ ¿µ¿ªÀÇ ±³ÁýÇÕÀÌ ÀÖ´ÂÁö Á¶»çÇÑ´Ù.

BOOL IsEmptyArea(VOID) const;

ºó ¿µ¿ªÀÎÁö Á¶»çÇÑ´Ù.

BOOL Union(Rect& c, const Rect& a, const Rect& b);

µÎ »ç°¢ ¿µ¿ªÀÇ ÇÕÁýÇÕ ¿µ¿ªÀ» ±¸ÇÑ´Ù.

 

´ëºÎºÐÀÇ ¸â¹ö ÇÔ¼öµéÀº GDI¿¡µµ ÀÌ¹Ì Á¸ÀçÇÏ´Â °ÍµéÀÌ°í ÀÌ Áß ÀϺδ »ç¿ëÇØ º» °æÇèµµ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÇÔ¼öµé¿¡ ´ëÇÑ ´õ »ó¼¼ÇÑ Á¤º¸´Â µµ¿ò¸»¿¡µµ ±â·ÏµÇ¾î ÀÖÁö¸¸ ±×º¸´Ù ´õ È®½ÇÇÏ°íµµ ½¬¿î Á¤º¸´Â ¿ª½Ã Çì´õ ÆÄÀÏ(GdiplusTypes.h)¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. C++ ¾ð¾î¿¡ Àͼ÷ÇÑ »ç¶÷¿¡°Ô´Â ¹®¼­È­µÈ ¼³¸íº¸´Ù Äڵ尡 ´õ ÁÁÀº Á¤º¸°¡ µÈ´Ù. ´ÙÀ½¿¡ ¸î°¡Áö ¸â¹öÀÇ Äڵ忹ÀÌ´Ù.

 

BOOL IsEmptyArea() const

{

    return (Width <= 0) || (Height <= 0);

}

 

BOOL Equals(IN const Rect & rect) const

{

    return X == rect.X && Y == rect.Y &&

           Width == rect.Width && Height == rect.Height;

}

 

BOOL Contains(IN INT x,IN INT y) const

{

    return x >= X && x < X+Width && y >= Y && y < Y+Height;

}

 

VOID Inflate(IN INT dx,IN INT dy)

{

    X -= dx;

    Y -= dy;

    Width += 2*dx;

    Height += 2*dy;

}

 

Äڵ带 Àд °ÍÀÌ ¼³¸íÀ» Àд °Íº¸´Ù ÈξÀ ´õ ºü¸£°í Á¤ÇÐÇÏ°Ô ÇÔ¼öÀÇ µ¿ÀÛÀ» ÀÌÇØÇÏ´Â ¹æ¹ýÀÌ´Ù. ÀÌ ¿¹¿¡¼­ º¸´Ù½ÃÇÇ ¸ðµç ¸â¹ö ÇÔ¼öÀÇ ¸ñ·ÏÀ» ÀÏÀÏÀÌ ³ª¿­Çϸ鼭 ¼³¸íÇÏ´Â °ÍÀº Áö¸éÀ» ³¶ºñÇÏ´Â °Í ÀÌ»óÀÇ Àǹ̸¦ ã±â ¾î·Æ´Ù. ¾îÂ÷ÇÇ µµ¿ò¸»À̳ª Çì´õ ÆÄÀÏ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Â Á¤º¸µéÀ̸ç ÇÔ¼öÀÇ À̸§À¸·ÎºÎÅÍ µ¿ÀÛÀÇ 90% ÀÌ»óÀ» À¯ÃßÇس¾ ¼ö ÀÖ´Ù. ±×·¡¼­ ÀÌÈĺÎÅÍ´Â º»¹®¿¡¼­ ÇÔ¼öÀÇ Áߺ¹ Á¤ÀÇµÈ ¿øÇüÀ» ¸ðµÎ ¼³¸íÇѴٵ簡 ¸â¹ö ÇÔ¼ö¸¦ ³ª¿­ÇÏ´Â ºñÈ¿À²ÀûÀÎ ¹æ¹ýÀ» ÀÚÁ¦ÇÏ°í ÇÙ½ÉÀûÀÎ ³»¿ë¿¡ ´ëÇؼ­¸¸ ´Ù·ç±â·Î ÇÑ´Ù.

µû¶ó¼­ µ¶ÀÚµéÀº º»¹®¿¡¼­ ¼Ò°³ÇÏÁö ¾Ê´Â ÇÔ¼ö¿¡ ´ëÇؼ­µµ µµ¿ò¸»¿¡¼­ Àû±ØÀûÀ¸·Î ã¾Æ È°¿ëÇÏ´Â ÀÚ¼¼¸¦ °¡Á®¾ß ÇÑ´Ù. ¾à°£ÀÇ ¿µ¾î µ¶ÇØ ´É·Â¸¸ ÀÖÀ¸¸é µµ¿ò¸»¿¡¼­ ¹æ´ëÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖÀ¸¸ç ÇÊ¿äÇÒ ¶§ ¾ðÁ¦µçÁö ÂüÁ¶ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÏÀÏÀÌ ¾Ï±âÇÒ ÇÊ¿äµµ ¾ø´Â ¼ÀÀÌ´Ù. »ç¶÷ÀÌ ±â¾ïÇØ¾ß ÇÒ °ÍÀ» ÃÖ¼ÒÈ­½ÃÅ°´Â °ÍÀÌ ¹Ù·Î OOPÀÇ ¸ñÀû Áß Çϳª¶ó°í ÇÒ ¼ö ÀÖ´Ù. Çö´ëÀÇ ¶óÀ̺귯¸®µéÀº »ç¿ëÀÚµéÀÌ Á¶±ÝÀÌ¶óµµ Çʿ並 ´À³¥¸¸ÇÑ ÇÔ¼öµéÀ» ¸ðµÎ Á¦°øÇÑ´Ù°í º¸¸é Ʋ¸² ¾øÀ¸¹Ç·Î ÇÊ¿äÇÒ ¶§ °Ë»öÇصµ ´ÊÁö ¾Ê´Ù.