3.±×¸®±â ÇÔ¼ö

°¡.»ö»ó

±×¸®±â ÇÔ¼ö¸¦ °øºÎÇϱâ Àü¿¡ Ãâ·Â µµ±¸ÀÇ ÀÏÁ¾ÀÎ »ö»ó°ú Ææ, ºê·¯½Ã¸¦ ¸¸µå´Â ±âº»ÀûÀÎ ¹æ¹ýºÎÅÍ ¾Ë¾Æ º¸ÀÚ. È­¸é¿¡ ¹¹¶óµµ ³ª¿Í¾ß ±×¸®±â ÇÔ¼öÀÇ µ¿ÀÛÀ» È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç ¾Æ¹«¸® °£´ÜÇÑ ÇÔ¼öµµ È£ÃâÇؼ­ °á°ú¸¦ È®ÀÎÇØ ºÁ¾ß ½Ç½ÀÀÇ Àç¹Ì°¡ ÀÖ´Â ¹ýÀÌ´Ù. ±×·¡¼­ ÇÙ½ÉÀûÀÎ ±¸Á¶³ª °í±Þ ±â¹ý¿¡ ¾Õ¼­ ±âº»ÀûÀÎ Ãâ·Â ¹æ¹ýºÎÅÍ ÀÍÈú ÇÊ¿ä°¡ ÀÖ´Ù.

GDI+´Â »ö»óÀ» Color Ŭ·¡½º·Î Ç¥ÇöÇÑ´Ù. Color Ŭ·¡½º´Â 32ºñÆ®ÀÇ Á¤¼ö·Î »ö»óÀ» °ü¸®Çϴµ¥ 8ºñÆ®¾¿ À߶ó A,R,G,B ¿ä¼Ò¸¦ Ç¥ÇöÇÑ´Ù. R,G,B´Â °¢°¢ »¡°£»ö, ÃÊ·Ï»ö, ÆĶõ»öÀÇ °­µµ¸¦ ÁöÁ¤Çϸç A´Â ºÒÅõ¸íµµÀÎ ¾ËÆĸ¦ ÁöÁ¤ÇÑ´Ù. ¾ËÆÄ°¡ 0ÀÌ¸é ¿ÏÀüÈ÷ Åõ¸íÇؼ­ º¸ÀÌÁö ¾Ê´Â »óÅÂÀ̸ç 255ÀÌ¸é ºÒÅõ¸íÇÑ »óÅÂÀÌ´Ù.

GDIÀÇ »ö»ó ¸ðµ¨Àº RGBÀε¥ ºñÇØ GDI+ÀÇ »ö»ó ¸ðµ¨Àº ¾ËÆÄ°¡ Ãß°¡µÈ ARGB¶ó°í ºÎ¸¥´Ù. »ö»ó¿¡ Åõ¸íµµ¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î°¡ ÀÖÀ¸¹Ç·Î GDI+´Â ¹ÝÅõ¸íÇÑ Ãâ·ÂÀ» ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. Color Ŭ·¡½ºÀÇ »ý¼ºÀÚ´Â ´ÙÀ½ 4°¡Áö°¡ ÀÖ´Ù.

 

Color(VOID);

Color(BYTE a, BYTE r, BYTE g, BYTE b);

Color(BYTE r, BYTE g, BYTE b);

Color(ARGB argb);

 

µðÆúÆ® »ý¼ºÀÚ´Â ºÒÅõ¸íÇÑ °ËÁ¤»öÀ» »ý¼ºÇϸç RGB¸¸ Áְųª ¾Æ´Ï¸é ARGB¸¦ °¢°¢ »ý¼ºÀÚ·Î Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. ¸¶Áö¸· »ý¼ºÀÚ´Â DWORD·Î Á¤ÀÇµÈ ARGB ŸÀÔÀÇ 16Áø°ªÀ¸·Î »ö»óÀ» °£´ÜÇÏ°Ô ÁöÁ¤ÇÑ´Ù. ¿¹¸¦ µé¾î 0xff00ff00Àº ºÒÅõ¸íÇÑ ÃÊ·Ï»öÀ̸ç 0xff0000ff´Â ÆĶõ»öÀÌ´Ù. 16Áø¼ö¿¡ Àͼ÷ÇÏ´Ù¸é ¼ÖÁ÷È÷ Á¦ÀÏ Æí¸®ÇÑ »ý¼ºÀÚ¶ó°í ÇÒ ¼ö ÀÖ´Ù.

ColorÀÇ ¸â¹ö ÇÔ¼ö·Î´Â °¢ »ö»ó ¿ä¼Ò¸¦ ÃßÃâÇÏ´Â GetA, GetR, GetG, GetB µîÀÌ ÀÖ°í ARGBÇüÅ·Π°ªÀ» Àаųª ¾²´Â GetValue, SetValue¿Í GDIÀÇ COLORREFÇüÀ¸·Î »óÈ£ º¯È¯ÇÏ´Â SetFromCOLORREF, ToCOLORREF µîÀÌ ÀÖ´Ù. °¡Àå ±âº»ÀûÀÎ ±×¸®±â ¿ÀºêÁ§Æ®ÀÎ Ææ°ú ºê·¯½Ã¸¦ ¸¸µé·Á¸é ÀÏ´Ü »ö»óÀ» Ç¥ÇöÇϱâ À§ÇÑ Color °´Ã¼¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù. ±×¸®°í Pen°ú SolidBrushÀÇ »ý¼ºÀÚ·Î Color °´Ã¼ÀÇ ·¹ÆÛ·±½º¸¦ Àü´ÞÇÏ¿© ¸¸µé°í ½ÍÀº ¿ÀºêÁ§Æ®ÀÇ »ö»óÀ» ÁöÁ¤ÇÑ´Ù.

´Ù¾çÇÑ ¸ð¾çÀÇ Ææ, ºê·¯½Ã¸¦ ¸¸µå´Â ¹æ¹ýÀº ´ÙÀ½ÀýºÎÅÍ »ó¼¼ÇÏ°Ô ¹è¿ö º¸±â·Î ÇÏ°í ÀÏ´ÜÀº »ö»óÀÌ È­¸é¿¡ Àß Ç¥ÇöµÇ´ÂÁö ¿¹Á¦¸¦ ¸¸µé¾î ºÁ¾ß ÇϹǷΠ±âº»ÀûÀÎ °´Ã¼ »ý¼º¹®ºÎÅÍ ¾Ë¾Æº¸ÀÚ. ´ÙÀ½ ÄÚµå´Â »¡°£»öÀ» C °´Ã¼·Î Á¤ÀÇÇÏ°í ±½±â 3ÀÇ »¡°£»ö Ææ P¿Í »¡°£»ö ´Ü»ö ºê·¯½Ã S¸¦ »ý¼ºÇÑ´Ù. »ö»ó °´Ã¼¸¦ Ææ°ú ºê·¯½ÃÀÇ »ý¼ºÀÚ Àμö·Î Àü´ÞÇϱ⸸ ÇÏ¸é µÈ´Ù.

 

Color C(255,0,0);

Pen P(C,3);

SolidBrush S(C);

 

GDI+°¡ GDI¿¡ ºñÇØ ±â´ÉÀûÀ¸·Î ¿ì¿ùÇÑ Á¡Àº ¹ÝÅõ¸íÇÑ Ãâ·ÂÀÌ °¡´ÉÇÏ´Ù´Â Á¡Àε¥ ÀÌ´Â Color °´Ã¼°¡ Åõ¸íµµ¸¦ ÁöÁ¤ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â ÆĶõ»ö »ç°¢Çü À§¿¡ »¡°£»ö Ÿ¿øÀ» °ãÃÄ ±×¸®µÇ Åõ¸íµµ¸¦ ¹Ù²ã °¡¸ç ±×¸°´Ù. ÀÌ ¿¹Á¦¸¦ ÅëÇØ ¹ÝÅõ¸íÇÑ Ãâ·ÂÀÇ ¿¹¸¦ º¸µµ·Ï ÇÏÀÚ.

 

¿¹ Á¦ : TransTest

BYTE Opa=128;

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

     Color C1(0,0,255);

     Color C2(Opa,255,0,0);

     SolidBrush B1(C1);

     SolidBrush B2(C2);

 

     G.FillRectangle(&B1,10,10,300,200);

     G.FillEllipse(&B2,50,50,400,200);

}

 

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

{

     HDC hdc;

     PAINTSTRUCT ps;

     TCHAR str[128];

 

     switch(iMessage) {

     case WM_KEYDOWN:

          switch (wParam) {

          case VK_UP:

              Opa=min(255,Opa+32);

              InvalidateRect(hWnd,NULL,TRUE);

              break;

          case VK_DOWN:

              Opa=max(0,Opa-32);

              InvalidateRect(hWnd,NULL,TRUE);

              break;

          }

          return 0;

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          OnPaint(hdc);

          wsprintf(str,TEXT("ºÒÅõ¸íµµ : %d"),Opa);

          TextOut(hdc,10,300,str,lstrlen(str));

          EndPaint(hWnd, &ps);

          return 0;

     case WM_DESTROY:

          PostQuitMessage(0);

          return 0;

     }

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

}

 

Åõ¸íµµ¸¦ ³ªÅ¸³»´Â Opa º¯¼ö´Â ÃÖÃÊ 128·Î ÃʱâÈ­µÇ¾î ÀÖÀ¸¹Ç·Î C2 »ö»óÀº ¹ÝÂë Åõ¸íÇÑ »¡°£»öÀÌ µÈ´Ù. ÀÌ »ö»óÀ¸·Î ºê·¯½Ã¸¦ ¸¸µé¾î Ÿ¿øÀ» ±×·ÈÀ¸¹Ç·Î ¾Æ·¡ÂÊÀÇ »ç°¢ÇüÀÌ Å¸¿ø µÚÂÊÀ¸·Î º¸ÀÌ°Ô µÈ´Ù. »óÇÏ Ä¿¼­ À̵¿Å°·Î Opa°ªÀ» Á¶ÀýÇÒ ¼ö ÀÖÀ¸¹Ç·Î Åõ¸íµµ¸¦ Á¶Á¤ÇØ º¸¸é¼­ Ãâ·Â °á°ú¸¦ ºñ±³ÇØ º¸ÀÚ.

Á÷Á¢ ½ÇÇèÇØ º¸¸é ¾Ë°ÚÁö¸¸ ¹ÝÅõ¸í Ãâ·ÂÀÇ ¼Óµµ´Â ±×´ÙÁö ¸¸Á·½º·´Áö ¸øÇÏ´Ù. ºÒÅõ¸íÇÏ°Ô Ãâ·ÂÇÏ·Á¸é ¹è°æÀÇ ºñÆ®¸ÊÀ» ÀÐÀº ÈÄ ±×·ÁÁú µµÇü°ú ºñÆ® Á¶ÇÕÇؼ­ ´Ù½Ã ±â·ÏÇØ¾ß ÇϹǷΠ´À¸± ¼ö¹Û¿¡ ¾ø´Ù. ¶ÇÇÑ ÀÌ·± ¿¬»êÀ» °ÅÄ¡°Ô µÇ¸é Çϵå¿þ¾î ±×·¡ÇÈ °¡¼Ó ±â´ÉÀÇ Áö¿øÀ» ¹ÞÀ» ¼ö ¾øÀ¸¸ç ¼ø¼öÇÑ ¼ÒÇÁÆ®¿þ¾î Äڵ常À¸·Î Ãâ·ÂÇØ¾ß ÇϹǷΠ´õ¿í ´À·ÁÁø´Ù.

³ª.Ç¥ÁØ »ö»ó

»ö»óÀ» Á¤ÀÇÇÏ°í Ææ°ú ºê·¯½Ã¸¦ ¸¸µé¾î »ç¿ëÇÏ´Â ÀýÂ÷´Â Áö±ØÈ÷ »ó½ÄÀûÀÌ´Ù. ±×·¯³ª ¿©·¯ ´Ü°è¸¦ °ÅÃÄ¾ß ÇϹǷΠÁ¶±Ý ¹ø°Å·Î¿î ¸éÀÌ ÀÖ´Ù. Á¶±Ý ´õ Æí¸®ÇÏ°í °£´ÜÇÑ ¹æ¹ýÀº ¾ø´ÂÁö ¿¬±¸ÇØ º¸ÀÚ.

 

¿¹ Á¦ : Colors

´ÙÀ½ ÄÚµå´Â ÆĶõ»öÀ¸·Î ¿øÀ» ±×¸®´Â °¡Àå Á¤¼®ÀûÀÎ ¹æ¹ýÀÌ´Ù.

 

Color Blue(0,0,255);

Pen P(Blue);

G.DrawEllipse(&P,10,10,100,100);

 

ÆĶõ»ö °´Ã¼ Á¤ÀÇÇÏ°í ÀÌ »öÀ¸·Î Ææ ¸¸µé°í, ÆæÀ» »ç¿ëÇÏ¿© ¿øÀ» ±×·È´Ù. ¿øÀ» ±×¸®·Á¸é ÆæÀÌ ÇÊ¿äÇÏ°í ÆæÀ» ¸¸µé·Á¸é »ö»óÀ» ¸ÕÀú Á¤ÀÇÇØ¾ß ÇϹǷΠ¼ø¼­´ë·Î °´Ã¼¸¦ »ý¼ºÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. ¿ø Çϳª ±×¸®´Âµ¥ ¼¼ ÁÙÀ̳ª ÇÊ¿äÇÏ´Ù´Â °Ô ¸¶À½¿¡ ¾Èµå´Âµ¥ Á» ´õ °£´ÜÇÏ°Ô ÁÙÀÏ ¼ö ÀÖ´Ù.

Pen Ŭ·¡½ºÀÇ »ý¼ºÀÚ¿¡¼­ Color Ŭ·¡½ºÀÇ »ý¼ºÀÚ¸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇÏ¿© À̸§ÀÌ ¾ø´Â Àӽà °´Ã¼¸¦ ¸¸µé¾ú´Ù. À̸§ÀÌ ¾ø´Â Àӽà °´Ã¼´Â ÆæÀ» ¸¸µå´Â µ¿¾È¿¡¸¸ Àá½Ã »ç¿ëµÇ¸ç ÇÔ¼ö¸¦ ºüÁ® ³ª°¥ ¶§ ÀÚµ¿À¸·Î Á¦°ÅµÈ´Ù. ÄÚµå´Â µÎ ÁÙ·Î ÁÙ¾î µç´Ù.

 

Pen P(Color(0,0,255));

G.DrawEllipse(&P,10,10,100,100);

 

"ÆĶõ»ö ¸¸µé¾î, ±× »öÀ¸·Î Ææ ¸¸µé¾î" ¶ó´Â ¸í·ÉÀÌ "ÆĶõ»ö Ææ ¸¸µé¾î" Çϳª·Î ÁÙ¾îµç °ÍÀÌ´Ù. ÀÏ´Ü ÄÚµå ±æÀÌ°¡ ª¾ÆÁ³°í °´Ã¼ÀÇ À̸§À» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î ÈξÀ ´õ Æí¸®ÇÏ´Ù. ±×·¸´Ù¸é Color Àӽà °´Ã¼¸¦ »ç¿ëÇßµíÀÌ Ææµµ Àӽà °´Ã¼·Î ¼±¾ðÇؼ­ »ç¿ëÇÏ¸é µÇÁö ¾ÊÀ»±î? ¾îÂ÷ÇÇ Ææµµ ¿øÀ» ±×¸®´Â µ¿¾È¿¡¸¸ Àá½Ã »ç¿ëµÇ¹Ç·Î ±»ÀÌ À̸§À» ÁÖ°í ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ´õ ª°Ô ÁÙÀ̸é ÇÑÁÙ·Î ¾ÐÃàµÈ´Ù.

 

G.DrawEllipse(&Pen(Color(0,0,255)),10,10,100,100);

 

ÄÚµå´Â ª¾ÆÁ³Áö¸¸ ¾ÐÃàÀ» ÇÏ´Ù º¸´Ï Á¶±Ý º¹ÀâÇØ º¸ÀÌ¸ç °¡µ¶¼ºÀÌ ¶³¾îÁø´Ù. ¶Ç »ö»ó ¿ä¼Ò¸¦ ÀÏÀÏÀÌ Á¶ÇÕÇÏ´Â ¹æ¹ýÀº ½±±â´Â ÇÏÁö¸¸ Á÷°üÀûÀÌÁö ¸øÇÏ´Ù. »¡°£»öÀ̳ª ÆĶõ»öÀº ½±°Ô Á¤ÀǵÇÁö¸¸ ³ë¶õ»öÀ̳ª ¸¶Á¨Å¸ »ö»óÀº Ç×»ó Çò°¥¸®¸ç °¥»öÀ̳ª ¾ÆÀ̺¸¸®»ö µîÀº »ö»óÇ¥¸¦ ã¾Æ ºÁ¾ß RGB°ªÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÚÁÖ ¾²´Â »ö»óÀº Á» ´õ Á÷°üÀûÀÎ ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ¾úÀ¸¸é ÇÏ´Â ¾Æ½¬¿òÀÌ ÀÖ´Ù.

GDI+´Â C++·Î ÀÛ¼ºµÇ¾úÁö¸¸ ´Ù¸¥ ¾ð¾î¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹ü¿ë ¶óÀ̺귯¸®ÀÌ´Ù. ´å³ÝÀÇ ±âº» ¾ð¾îÀÎ C#¿¡¼­µµ GDI+¸¦ »ç¿ëÇÒ ¼ö Àִµ¥ ±â¹Ý ¶óÀ̺귯¸®°¡ °°¾Æµµ ÀÎÅÍÆäÀ̽º´Â Á¶±Ý ´Ù¸£´Ù. C#¿¡¼­´Â ÀÚÁÖ ¾²´Â »ö»óµéÀ» Color¶ó´Â Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ·Î Á¦°øÇϸç Ç¥ÁØ 140°³ÀÇ »ö»ó¿¡ ´ëÇÑ À̸§ÀÌ Á¤ÀǵǾî ÀÖ´Ù. ¿ø»ö °è¿­Àº ¹°·ÐÀÌ°í ÀÏ»óÀûÀ¸·Î »ç¿ëµÇ´Â À¢¸¸ÇÑ »ö»óÀº ´Ù Á¦°øµÇ´Â ¼ÀÀÌ´Ù.

Color.Blue, Color.Yellow °°ÀÌ »ö»ó À̸§À» ÇÁ·ÎÆÛƼ·Î ÁöÁ¤ÇÏ¸é µÈ´Ù. ³ë¶õ»öÀÇ RGB°ªÀ» ¿Ü¿ì´Â »ç¶÷Àº µå¹°Áö¸¸ Yellow°¡ ³ë¶õ»öÀ̶ó´Â °ÍÀº ´©±¸³ª ¾Ë°í ÀÖÀ¸¹Ç·Î ±â¾ïÀÌ ÈξÀ ¿ëÀÌÇÏ°í Äڵ带 Àб⵵ ½±´Ù. ¶Ç Ç¥ÁØ »ö»óÀ¸·Î ÆæÀ» ¹Ù·Î »ý¼ºÇÒ ¼ö ÀÖ´Â Pens¶ó´Â Ŭ·¡½ºµµ Á¦°øµÈ´Ù. Pens.Blue Ç¥Çö½ÄÀ¸·Î ÆĶõ»ö ÆæÀ» ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. À§ÀÇ C++ Äڵ带 C# Çü½ÄÀ¸·Î ¹Ù²Ù¸é ´ÙÀ½°ú °°´Ù.

 

G.DrawEllipse(Pens.Blue,10,10,100,100);

 

ÆĶõ»ö ÆæÀ̶ó´Â °ÍÀ» Á÷°üÀûÀ¸·Î ¾Ë ¼ö ÀÖ¾î C++ Äڵ庸´Ù ±æÀ̵µ ª°í °¡µ¶¼ºµµ ÈξÀ ´õ ³ô´Ù. º° Â÷ÀÌ ¾Æ´Ñ °Í °°Áö¸¸ ÆæÀ̳ª ºê·¯½Ã´Â »ç¿ë ºóµµ°¡ ³ô±â ¶§¹®¿¡ ÀÌ ÀÛÀº Â÷ÀÌ¿¡ ÀÇÇØ »ý»ê¼º¿¡´Â »ó´çÇÑ °ÝÂ÷°¡ ¹ß»ýÇÑ´Ù.

´ÙÀ½Àº ½Ã½ºÅÛ »ö»óÀ» »ç¿ëÇØ º¸ÀÚ. GDI+ ÀÚü¿¡´Â ½Ã½ºÅÛ »ö»óÀ» Á¶»çÇÏ´Â ÇÔ¼ö°¡ ¾øÀ¸¹Ç·Î ¿î¿µÃ¼Á¦ÀÇ Ç¥ÁØ ÇÔ¼ö·Î »ö»óÀ» Á¶»çÇØ¾ß ÇÑ´Ù. GetSysColor ÇÔ¼ö´Â COLORREF ŸÀÔÀ¸·Î »ö»óÀ» ¸®ÅÏÇϹǷΠColor °´Ã¼¸¦ ¼±¾ðÇÑ ÈÄ SetFromCOLORREF ÇÔ¼ö¸¦ È£ÃâÇÏ¿© GDI+ÀÇ »ö»ó ŸÀÔÀ¸·Î ¹Ù²ã¾ß ÇÑ´Ù.

 

Color High;

High.SetFromCOLORREF(GetSysColor(COLOR_HIGHLIGHT));

G.FillEllipse(&SolidBrush(High),10,10,100,100);

 

°¡±ÞÀû ª°Ô ÁÙ¿© º¸¾Ò´Âµ¥ ±×·¡µµ ²Ï º¹ÀâÇØ º¸ÀδÙ. C#ÀÇ °æ¿ì´Â ½Ã½ºÅÛ »ö»óÀ» Á¶»çÇÏ´Â SystemColors Ŭ·¡½º¿Í ½Ã½ºÅÛ »ö»óÀ¸·Î Ææ°ú ºê·¯½Ã¸¦ ¸¸µé ¼ö ÀÖ´Â SystemPens, SystemBrushes¶ó´Â Ŭ·¡½º°¡ ÀÖ¾î À̸§À¸·ÎºÎÅÍ »ö»ó, Ææ, ºê·¯½Ã¸¦ ½±°Ô ¸¸µé ¼ö ÀÖ´Ù. C# ÄÚµå·Î´Â ´Ü ÇÑ ÁÙÀÌ¸é µÇ¸ç Àб⵵ ÈξÀ ´õ ½±´Ù.

 

G.FillEllipse(SystemBrushes.HighLight,10,10,100,100);

 

C#ÀÌ »ì¦ ºÎ·¯¿öÁö´Â ¼ø°£Àε¥ ±×·¸´Ù¸é ¾ø´Ù°í ¸ø ¾µ¼Ò³Ä! C++¿¡¼­µµ Á÷Á¢ ¸¸µé¾î ¾²¸é µÉ °Í ¾Æ´Ñ°¡? Ŭ·¡½º·Î Çѹø¸¸ ¸¸µé¾î µÎ¸é µÎ°í µÎ°í Àç»ç¿ë °¡´ÉÇϹǷΠC# ºÐÀ§±â¸¦ ³¾ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸ÕÀú Ç¥ÁØ »ö»óÀ» Á¤ÀÇÇÏ´Â Colors Ŭ·¡½º¸¦ ¸¸µé¾î º¸ÀÚ. ´å³Ý¿¡´Â Color Ŭ·¡½º¿¡ Á¤Àû ÇÁ·ÎÆÛƼ°¡ Æ÷ÇÔµÈ ÇüÅÂÀÌÁö¸¸ C++¿¡¼­´Â ÀÌ¹Ì Á¤ÀÇµÈ Å¬·¡½º¸¦ °°Àº À̸§À¸·Î È®ÀåÇÒ ¼ö ¾øÀ¸¹Ç·Î ºÎµæÀÌÇÏ°Ô À̸§À» Colors·Î Á¤Çß´Ù. ¹«¼öÈ÷ ¸¹Àº »ö»óÀ» Á¤ÀÇÇÒ ¼ö ÀÖ°ÚÁö¸¸ ÀÏ´ÜÀº ÆĶõ»öÀ» Á¤ÀÇÇÏ´Â Blue¶ó´Â ÇÔ¼ö¸¸ Á¤ÀÇÇØ º¸¾Ò´Ù.

 

class Colors

{

public:

     static Color Blue() { return Color(0,0,255); }

};

 

°´Ã¼ ¾øÀÌ »ö»óÀ» ¸¸µé¾î ³»¾ß ÇϹǷΠstatic ÇÔ¼ö·Î ¼±¾ðÇßÀ¸¸ç ÆĶõ»öÀÇ Color °´Ã¼ Çϳª¸¦ ¸¸µé¾î¼­ ¸®ÅÏÇÑ´Ù. ¿©±â±îÁö´Â ¸ÚÁö´Ù. ±×·¯³ª ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ±¸¹®À» ÀÛ¼ºÇØ º¸¸é º°·Î ¸ÚÁöÁö ¾Ê´Ù.

 

Pen P(Colors::Blue());

 

Àß µ¿ÀÛÇϱâ´Â ÇÏÁö¸¸ Color.Blue¿Í´Â ÇüÅ°¡ ¸¹ÀÌ ´Ù¸£´Ù. ¿ì¼± Ŭ·¡½º¿Í Á¤Àû ¸â¹ö ÇÔ¼ö »çÀÌÀÇ ±¸ºÐÀÚ°¡ . ÀÌ ¾Æ´Ï¶ó :: À̶ó´Â ¹®¹ýÀû Â÷ÀÌÁ¡ÀÌ ÀÖ°í Blue°¡ ÇÔ¼öÀÌ´Ù º¸´Ï µÚ¿¡ °ýÈ£¸¦ ºÙ¿©¾ß ÇÏ´Â ¹ø°Å·Î¿òµµ ÀÖ´Ù. »ö»ó °´Ã¼¸¦ ¸¸µå´Â µ¿ÀÛÀ» ÇϹǷΠº¯¼ö·Î´Â ¾ÈµÇ°í ÇÔ¼ö¿©¾ß Çϴµ¥ ±×·¯´Ù º¸´Ï °ýÈ£°¡ ²À ÇÊ¿äÇÑ °ÍÀÌ´Ù. C#ÀÇ Blue´Â ÇÁ·ÎÆÛƼ¿©¼­ °ýÈ£¸¦ ºÙÀÌÁö ¾Ê°íµµ ¾µ ¼ö ÀÖÁö¸¸ C++¿¡´Â ÇÁ·ÎÆÛƼ¿¡ ÇØ´çÇÏ´Â ÀåÄ¡°¡ ¾ø¾î ¾î¿ µµ¸®°¡ ¾ø´Ù.

C#ÀÇ ÇÁ·ÎÆÛƼ¶ó´Â ¹®¹ýÀº C++ ÇÁ·Î±×·¡¸Ó ÀÔÀå¿¡¼­ Á¤¸» Ž³ª´Â ¹°°ÇÀε¥ ÀÌ ´ë¸ñ¿¡¼­´Â ¹«Ã´ ¾Æ½±´Ù. ±×·¡µµ ¾î·µç ¿øÇϴ´ë·Î µ¿ÀÛÇϱâ´Â ÇÑ´Ù. ´ÙÀ½Àº Ç¥ÁØ »ö»óÀ¸·Î ÆæÀ» »ý¼ºÇÏ´Â Pens Ŭ·¡½º¸¦ ¸¸µé¾î º¸ÀÚ. ¿ª½Ã ÆĶõ»ö ÆæÀ» »ý¼ºÇÏ´Â Á¤Àû ÇÔ¼ö¸¸ Á¤ÀÇÇØ º¸¾Ò´Ù. ÆĶõ»öÀ» ¸®ÅÏÇÏ´Â Colors Ŭ·¡½º¸¦ ¸¸µé¾î µÎ¾úÀ¸´Ï È°¿ëÇØ º¸ÀÚ. ¾Æ¸¶ ´ÙÀ½°ú °°Àº ¸ð¾çÀÌ ³ª¿Ã °ÍÀÌ´Ù.

 

class Pens

{

public:

     static Pen Blue() { return Pen(Colors::Blue()); }

};

 

ÆĶõ»öÀÇ Àӽà Ææ °´Ã¼¸¦ ¸¸µé¾î¼­ ¸®ÅÏÇÑ´Ù. ±×·¯³ª ÀÌ ÄÚµå´Â ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù. ¿Ö³Ä Çϸé C++¿¡¼­ °´Ã¼¸¦ ¸®ÅÏÇÒ ¶§ º¹»ç »ý¼ºÀÚ°¡ È£ÃâµÇ´Âµ¥ Pen Ŭ·¡½ºÀÇ º¹»ç »ý¼ºÀÚ°¡ private·Î ¼±¾ðµÇ¾î Àֱ⠶§¹®ÀÌ´Ù. ±×·¡¼­ °´Ã¼ ÀÚü¸¦ ¸®ÅÏÇÒ ¼ö´Â ¾ø°í Æ÷ÀÎÅ͸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çϸé Á¦´ë·Î ÄÄÆÄÀϵȴÙ.

 

class Pens

{

public:

     static Pen* Blue() { return new Pen(Colors::Blue()); }

};

 

ÀÌ Äڵ嵵 µ¿ÀÛÀº ÇÏÁö¸¸ ¹®Á¦°¡ Àִµ¥ new·Î µ¿Àû ÇÒ´çÇßÀ¸¹Ç·Î ¾²´Â ÂÊ¿¡¼­ ¾ðÁ¨°¡´Â delete¸¦ ÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. µû¶ó¼­ ÇÔ¼öÀÇ Àμö ÀÚ¸®¿¡¼­ Pens::Blue() µûÀ§·Î È£ÃâÇÒ ¼ö´Â ¾øÀ¸¸ç ¹Ýµå½Ã À̸§À» ÁÖ°í ´ëÀÔ¹Þ¾Æ¾ß ÇÏ°í ÇØÁ¦µµ ½Å°æ½á¾ß ÇÑ´Ù. ÀÌ·² ¹Ù¿¡¾ß Â÷¶ó¸® Àӽà °´Ã¼¸¦ ¾²´Â ÆíÀÌ ÈξÀ ´õ Æí¸®ÇÏ´Ù. ±×·¸´Ù¸é C#ÀÇ °æ¿ì´Â ¾î¶³±î? °´Ã¼¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇؼ­ ¸®ÅÏÇÑ´Ù´Â Á¡Àº ¶È°°Áö¸¸ C#Àº °¡ºñÁö Ä÷ºÅͶó´Â °­·ÂÇÑ ÀåÄ¡°¡ À־ delete¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ±×·¡¼­ ÇҴ縸 ÇÏ°í ÇØÁ¦´Â ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

°á±¹ C++·Î C# Èä³»³»±â´Â º¸±â ÁÁ°Ô ½ÇÆÐÇß´Ù. ¾î¶»°Ô Çϵç Á» ´õ ÆíÇÑ ¹æ¹ýÀ» ãÀ» ¼ö ÀÖ°ÚÁö¸¸ ¹®¹ýÀûÀÎ ÇÑ°è·Î ÀÎÇØ C#¸¸Å­ °£°áÇÑ Äڵ尡 ³ª¿À±â´Â ¾î·Æ´Ù. ÁÖ¿ä ¿øÀÎÀº ÇÁ·ÎÆÛƼ¿Í °¡ºñÁö Ä÷ºÅÍÀε¥ ¿ª½Ã ÃֽŠ¾ð¾î¿Í ½ºÆÑ»óÀ¸·Î´Â °æÀïÀÌ µÇÁö ¾Ê´Â´Ù. ÇÏ±ä ¾ÖÃÊ¿¡ C++·Î °¡´ÉÇÑ ±â´ÉÀ̶ó¸é ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®°¡ ÀÌ Å¬·¡½ºµéÀ» Á¦°øÇÏÁö ¾ÊÀ» ÀÌÀ¯°¡ ¾øÀ» °ÍÀÌ´Ù. Á¶±Ý ºÒÆíÇϱâ´Â ÇÏÁö¸¸ C++Àº ¼Óµµ°¡ 2¹è ÀÌ»ó ºü¸£´Ù´Â °ÍÀ» À§¾ÈÀ¸·Î »ïµµ·Ï ÇÏÀÚ.

¿©±â¼­ ±»ÀÌ C# ¾ð¾î¿ÍÀÇ Â÷ÀÌÁ¡À» º¸¿© ÁÖ´Â ÀÌÀ¯´Â C#À» ¸ÕÀú °øºÎÇÑ »ç¶÷µéÀÌ Color.Blue³ª Pens.Red¸¦ ã´Â °æ¿ì°¡ Á¾Á¾ Àֱ⠶§¹®ÀÌ´Ù. ÀÌ Å¬·¡½ºµéÀº ¾ÖÃÊ¿¡ GDI+ÀÇ ÀϺΰ¡ ¾Æ´Ï¶ó´Â Á¡À» ºÐ¸íÈ÷ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. C#Àº C++·Î ÀÛ¼ºµÈ GDI+¸¦ »ç¿ëÇÏÁö¸¸ ´Ü¼øÈ÷ »ç¿ë¸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ·¡ÇÎÀ» Çϱ⠶§¹®¿¡ Á» ´õ Æí¸®ÇÑ °í¼öÁØÀÇ Å¬·¡½º°¡ Ãß°¡·Î Á¦°øµÇ´Â °ÍÀÌ´Ù.

´Ù.Á÷¼±

GDIÀÇ Rectangle, Ellipse ÇÔ¼ö´Â Ç×»ó ÇöÀç DC¿¡ ¼±ÅÃµÈ ÆæÀ¸·Î ¿Ü°û¼±À» ±×¸®°í ±× ³»ºÎ´Â DC¿¡ ¼±ÅÃµÈ ºê·¯½Ã·Î ä¿î´Ù. ÇѲ¨¹ø¿¡ ±×¸®±â¿Í ä¿ì±â¸¦ ÇÒ ¼ö ÀÖ´Â Æí¸®ÇÔÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ¿Ü°û¼±ÀÌ ÇÊ¿ä¾øÀ» ¶§´Â NULL_PENÀ», ¸éÀ» ä¿ìÁö ¾ÊÀ» ¶§´Â NULL_BRUSH¸¦ ¼±ÅÃÇÑ ÈÄ ±×·Á¾ß ÇÑ´Ù´Â ¸é¿¡¼­´Â ºÒÆíÇÏ´Ù.

ÀÌ¿¡ ºñÇØ GDI+´Â ¿Ü°û¼±À» ±×¸®´Â ÇÔ¼ö¿Í ³»ºÎ¸¦ ä¿ì´Â ÇÔ¼ö°¡ ¿ÏÀüÈ÷ ºÐ¸®µÇ¾î ÀÖ¾î º°µµÀÇ Á¶Ä¡°¡ ¾ø¾îµµ ¿Ü°û¼±¸¸ µû·Î ±×¸®°Å³ª ¿Ü°û¼±¾øÀÌ ³»ºÎ¸¸ ä¿ï ¼ö ÀÖ´Ù. ¸¸¾à ¿Ü°û¼±µµ ±×¸®°í ä¿ì±âµµ ÇØ¾ß ÇÑ´Ù¸é °°Àº Àμö·Î µÎ ÇÔ¼ö¸¦ ¿¬¼ÓÀûÀ¸·Î È£ÃâÇØ¾ß ÇÑ´Ù. ¸ðµç ±×¸®±â ÇÔ¼ö´Â GraphicsÀÇ ¸â¹ö ÇÔ¼ö·Î Æ÷ÇԵǾî ÀÖÀ¸¸ç ¿Ü°û¼±À» ±×¸®´Â ÇÔ¼ö´Â Draw·Î ½ÃÀÛÇÏ°í ¸éÀ» ä¿ì´Â ÇÔ¼ö´Â Fill·Î ½ÃÀÛÇÑ´Ù. ±×¸®±â ÇÔ¼öÀÇ Àüü ¸ñ·ÏÀº ´ÙÀ½°ú °°´Ù.

 

 

¿Ü°û¼± ±×¸®±â

ä¿ì±â

¼±

DrawLine(s)

¾øÀ½

»ç°¢Çü

DrawRectangle(s)

FillRectangle(s)

´Ù°¢Çü

DrawPolygon

FillPolygon

Ÿ¿ø

DrawEllipse

FillEllipse

¿øÈ£

DrawArc

¾øÀ½

ºÎä²Ã

DrawPie

FillPie

Ä«µð³Î °î¼±

DrawCurve

¾øÀ½

º£Áö¾î °î¼±

DrawBezier(s)

¾øÀ½

Æó°î¼±

DrawClosedCurve

FillClosedCurve

¹®ÀÚ¿­

DrawString

¾øÀ½

ºñÆ®¸Ê

DrawImage

¾øÀ½

Æнº

DrawPath

FillPath

¸®Àü

¾øÀ½

FillRegion

 

¸ðµç ÇÔ¼ö°¡ ´Ù Á¤ÀǵǾî ÀÖÁö´Â ¾ÊÀ¸¸ç ÀϺΠ¾ø´Â ÇÔ¼öµéµµ Àִµ¥ ¿Ö ¾ø´ÂÁö´Â »ó½ÄÀûÀÎ ¼öÁØ¿¡¼­ ÀÌÇØÇÒ ¼ö ÀÖ´Ù. Á÷¼±À̳ª ¿øȣó·³ ä¿ï ¸éÀûÀÌ ¾ø´Â µµÇüÀº Fill ÇÔ¼ö°¡ ¾øÀ¸¸ç ºñÆ®¸Êµµ ¿ø·¡ºÎÅÍ Ã¤¿öÁø ¸ð¾çÀ̹ǷΠä¿ï ´ë»óÀÌ ¾ø´Ù. ¸®ÀüÀº 2Â÷¿øÀÇ ¿µ¿ªÀ̹ǷΠä¿ï¼ö¸¸ ÀÖÀ» »Ó ¿Ü°û¼±À» ±×¸± ¼ö´Â ¾ø´Ù. ±×¸®±â ÇÔ¼öµéÀ» Å×½ºÆ®ÇØ º¸±â À§ÇØ GdiPlusDraw ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.

 

¿¹ Á¦ : GdiPlusDraw

TCHAR Mode=TEXT('1');

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

 

     if (Mode == TEXT('1')) {

          // Á÷¼± ±×¸®±â

          Pen P(Color(0,0,0));

 

          G.DrawLine(&P,10,10,300,100);

          //G.DrawLine(&P,Point(10,10),Point(300,100));

     if (Mode == TEXT('2')) {

          ....

     if (Mode == TEXT('3')) {

          ....

 

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

{

     HDC hdc;

     PAINTSTRUCT ps;

 

     switch(iMessage) {

     case WM_KEYDOWN:

          Mode=(TCHAR)wParam;

          InvalidateRect(hWnd,NULL,TRUE);

          return 0;

     case WM_CREATE:

          hWndMain=hWnd;

          return 0;

     case WM_PAINT:

          hdc=BeginPaint(hWnd, &ps);

          OnPaint(hdc);

          EndPaint(hWnd, &ps);

          return 0;

          ....

 

ÁÖ·Î Ãâ·Â Äڵ常À» ÀÛ¼ºÇϹǷΠÅ×½ºÆ® ÄÚµåµéÀº OnPaint¿¡¸¸ ÁýÁßÀûÀ¸·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù. ÀÌ ¿¹Á¦ÀÇ Çü½ÄÀÌ ´Ù¼Ò »ý¼ÒÇØ º¸À̴µ¥ Mode¶ó´Â Àü¿ª º¯¼ö¸¦ ¼±¾ðÇÏ°í OnPaint¿¡¼­´Â Mode¿¡ µû¶ó °¢°¢ ´Ù¸¥ Å×½ºÆ® Äڵ带 ½ÇÇàÇϵµ·Ï µÇ¾î ÀÖ´Ù. ±×·¡¼­ OnPaint¹®Àº ÀüüÀûÀ¸·Î if else if else if ±¸Á¶¸¦ ¶ç´Âµ¥ °¢ if ºí·Ï¸¶´Ù Å×½ºÆ® Äڵ尡 Çϳª¾¿ µé¾î ÀÖÀ¸¸ç º»¹®¿¡¼­´Â ÀÌ ºí·ÏÀÇ Äڵ常 º¸À̱â·Î ÇÑ´Ù. switch case¸¦ ¾²Áö ¾Ê°í if else if¸¦ ¾²´Â ÀÌÀ¯´Â case¹® ³»ºÎ¿¡¼­´Â °íÀ¯ÇÑ Áö¿ª º¯¼ö¸¦ ¼±¾ðÇϴµ¥ Á¦¾àÀÌ Àֱ⠶§¹®ÀÌ´Ù.

Mode°ªÀº Å°º¸µåÀÇ 1, 2, 3, 4 ¼ýÀÚ¸¦ ´­·¯ ¼±ÅÃÇϵµ·Ï ÇßÀ¸¸ç ½ÇÇàÁß¿¡ ¾ðÁ¦¶óµµ Å°º¸µåÀÇ ¼ýÀÚ¸¦ ´­·¯ ¿øÇÏ´Â Å×½ºÆ® Äڵ带 ½ÇÇàÇØ º¼ ¼ö ÀÖ´Ù. ¼ýÀÚÅ°¸¦ ´©¸¦ ¶§¸¶´Ù ½ÇÇàµÇ´Â Ãâ·Â Äڵ尡 ´Þ¶óÁø´Ù. Å×½ºÆ® Äڵ尡 9°³¸¦ ³ÑÀ¸¸é ¾ËÆĺª A, B, C¸¦ ´©¸£¸é µÈ´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ¿¹Á¦¸¦ ÀÛ¼ºÇÏ´Â ÀÌÀ¯´Â ¸Å ÇÔ¼ö¸¶´Ù ¿¹Á¦ Çϳª¾¿ ¸¸µé±â´Â ³Ê¹« ¹ø°Å·Ó±â ¶§¹®ÀÌ´Ù. ¸î ÁÙ µÇÁöµµ ¾Ê´Â ÄÚµå ¶§¹®¿¡ ÇÁ·ÎÁ§Æ®¸¦ »õ·Î ¸¸µå´Â °ÍÀº ºÐ¸íÈ÷ ³¶ºñÀ̸ç ÇнÀÇϱ⿡µµ ÁÁÁö ¾Ê´Ù. ÀÌÀü¿¡´Â ÁÖ¼®À¸·Î °¢ Äڵ带 ¹­¾î ³õ°í ÁÖ¼®À» Ç®¾î°¡¸ç Å×½ºÆ®ÇÏ´Â ¹æ½ÄÀ» ½è´Âµ¥ ÀÌ ¶ÇÇÑ ¸Å¹ø ÄÄÆÄÀÏÀ» ÇØ¾ß ÇϹǷΠºÒÆíÇÏ´Ù.

±×·¡¼­ ºÎµæÀÌÇÏ°Ô Å°º¸µåÀÇ ¼ýÀÚÅ°·Î Å×½ºÆ® Äڵ带 ¼±ÅÃÇÏ´Â ¹æ½ÄÀ» ¼±ÅÃÇߴµ¥ óÀ½ º¸±â¿¡´Â ¾î»öÇØ º¸¿©µµ ±¸Á¶¸¦ ÆľÇÇÏ¸é ½Ç½ÀÇϴµ¥´Â ´ë´ÜÈ÷ Æí¸®ÇÏ´Ù. ÀÌÈÄ¿¡µµ ¿©·¯ ¹úÀÇ Å×½ºÆ® Äڵ带 ÇÑ ¿¹Á¦¿¡ ÀÛ¼ºÇÒ ¶§´Â ÀÌ¿Í ºñ½ÁÇÑ ¹æ½ÄÀ» °è¼Ó »ç¿ëÇÒ °ÍÀ̹ǷΠ¿©±â¼­ ¿¹Á¦ÀÇ ±¸Á¶¸¦ È®½ÇÈ÷ ÀÍÇô µÎ±â ¹Ù¶õ´Ù. ¸ÕÀú °¡Àå °£´ÜÇÑ µµÇüÀÎ ¼± ±×¸®±âºÎÅÍ ÇØ º¸ÀÚ. ¼±À» ±×¸®´Â ÇÔ¼ö´Â DrawLineÀÌµÇ 4°³ÀÇ ÇÔ¼ö°¡ ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù.

 

Status DrawLine(const Pen *pen, const Point &pt1, const Point &pt2);

Status DrawLine(const Pen *pen, INT x1, INT y1, INT x2, INT y2);

Status DrawLine(const Pen *pen, const PointF &pt1, const Point &pt2);

Status DrawLine(const Pen *pen, REAL x1, REAL y1, REAL x2, REAL y2);

 

ù ¹ø° Àμö´Â Ç×»ó ¼±À» ±×¸± ¶§ »ç¿ëÇÒ Ææ °´Ã¼ÀÌ¸ç ³ª¸ÓÁö´Â ¼±ÀÇ ½ÃÀÛÁ¡°ú ³¡Á¡À» ÁöÁ¤ÇÏ´Â ÀμöµéÀÌ´Ù. µÎ °³ÀÇ Point¸¦ ÁÙ ¼öµµ ÀÖ°í °¢ Á¡À» ±¸¼ºÇÏ´Â x, y¸¦ °³º°ÀûÀ¸·Î Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. ³ª¸ÓÁö µÎ ÇÔ¼ö´Â ½Ç¼ö¸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼öµéÀÌ´Ù. ¼Ò¼öÁ¡ ÀÌÇÏÀÇ Á¤¹ÐÇÑ ÁÂÇ¥¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù´Â °Í ¿Ü¿¡´Â ÀüÇô Â÷ÀÌ°¡ ¾øÀ¸¹Ç·Î ÀÌÈĺÎÅÍ ½Ç¼ö¸¦ Àμö·Î ÃëÇÏ´Â ÇÔ¼ö´Â µû·Î ¾ð±ÞÇÏÁö ¾Ê±â·Î ÇÑ´Ù.

DrawLine ÇÔ¼ö´Â GDIÀÇ MoveToEx, LineTo È£Ãâ°ú ±â´É»ó µ¿ÀÏÇ쵂 ÇÑ ÇÔ¼ö·Î ½ÃÀÛÁ¡°ú ³¡Á¡À» ¸ðµÎ ÁöÁ¤ÇÏ¿© ¿ÏÀüÇÑ ¼±À» ±×À» ¼ö ÀÖ´Ù. GDI+¿¡´Â ÇöÀç À§Ä¡¿¡ ÇØ´çÇÏ´Â CPÀÇ °³³äÀÌ ¾øÀ¸¹Ç·Î Ç×»ó ¼±ÀÇ ½ÃÀÛÁ¡°ú ³¡Á¡À» ¸ðµÎ Àμö·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â (10,10)À» ½ÃÀÛÁ¡À¸·Î ÇÏ°í (300,100)±îÁö °ÉÄ¡´Â Á÷¼±À» °ËÁ¤»ö ÆæÀ¸·Î ±×¸°´Ù.

 

Pen P(Color(0,0,0));

 

G.DrawLine(&P,10,10,300,100);

//G.DrawLine(&P,Point(10,10),Point(300,100));

ÁÂÇ¥¸¦ ±¸¼ºÇÏ´Â x, y°ªÀ» µû·Î Àü´ÞÇϵçÁö ¾Æ´Ï¸é Àӽà Point °´Ã¼ µÎ °³¸¦ Àü´ÞÇϵçÁö °á°ú´Â °°´Ù. »óȲ¿¡ µû¶ó È£ÃâÇϱâ Æí¸®ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù. º¹¼ö °³ÀÇ ¼±À» ÇѲ¨¹ø¿¡ ±×¸®°íÀÚ ÇÒ ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

 

Status DrawLines(const Pen *pen, const Point *points, INT count);

 

Á÷¼±µéÀÌ Åë°úÇÒ Á¡ÀÇ ¹è¿­À» µÎ ¹ø° Àμö·Î Àü´ÞÇÏ°í ÀÌ Á¡ÀÇ °³¼ö¸¦ count·Î Àü´ÞÇÏ¸é ¹è¿­»óÀÇ ¸ðµç Á¡À» Á÷¼±À¸·Î ¿¬°áÇÑ´Ù. ´Ù°¢¼±À» ±×¸®´Â ÇÔ¼ö¶ó°í ÇÒ ¼ö ÀÖÀ¸¸ç GDIÀÇ PolyLineÇÔ¼ö¿Í ±â´É»ó µ¿ÀÏÇÏ´Ù. ´ÙÀ½ ÄÚµå´Â »ï°¢ÇüÀ» ±×¸°´Ù.

 

Pen P(Color(0,0,0));

Point pts[]={Point(100,10),Point(10,150),Point(190,150),Point(100,10)};

 

G.DrawLines(&P,pts,sizeof(pts)/sizeof(pts[0]));

´ÝÈù »ï°¢ÇüÀ» ±×¸®·Á¸é ½ÃÀÛÁ¡°ú ³¡Á¡À» ¿¬°áÇØ¾ß ÇϹǷΠÇÊ¿äÇÑ Á¡ÀÇ °³¼ö´Â 4°³ÀÌ´Ù. Á¡ÀÇ ¹è¿­¸¸ Àß ÀÛ¼ºÇÏ¸é ¾ó¸¶µçÁö º¹ÀâÇÑ ¸ð¾çÀ» ±×¸± ¼ö ÀÖ´Ù.

¶ó.¸é

´ÙÀ½ ÇÔ¼ö´Â »ç°¢ÇüÀ» ±×¸®´Âµ¥ Rect °´Ã¼¸¦ Àü´ÞÇϰųª ¾Æ´Ï¸é Á»ó´Ü ÁÂÇ¥¿Í Æø, ³ôÀ̸¦ °¢°¢ Àü´ÞÇÑ´Ù.

 

Status DrawRectangle(const Pen *pen, const Rect &rect);

Status DrawRectangle(const Pen *pen, INT x, INT y, INT width, INT height);

 

Ÿ¿øÀ» ±×¸®´Â ÇÔ¼ö DrawEllipseµµ À̸§¸¸ ´Ù¸£°í ¿øÇüÀº µ¿ÀÏÇϸç ÁÖ¾îÁø »ç°¢Çü¿¡ ³»Á¢Çϴ Ÿ¿øÀ» ±×¸°´Ù.

 

Status DrawEllipse(const Pen *pen, const Rect &rect);

Status DrawEllipse(const Pen *pen, INT x, INT y, INT width, INT height);

 

»ç°¢Çü°ú Ÿ¿øÀÇ ³»ºÎ¸¦ ä¿ì´Â ÇÔ¼ö´Â FillRectangle, FillEllipseÀε¥ ù ¹ø° Àμö·Î Ææ ´ë½Å ³»ºÎ ä»ö¿¡ »ç¿ëÇÒ ºê·¯½Ã¸¦ ÁöÁ¤ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ¿Ü°û¼±À» ±×¸®´Â Draw ÇÔ¼ö´Â ÆæÀ» ¿ä±¸ÇÏ¸ç ¸éÀûÀ» ä¿ì´Â Fill ÇÔ¼ö´Â ºê·¯½Ã¸¦ ¿ä±¸ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â »ç°¢Çü°ú Ÿ¿ø ±×¸®±â/ä¿ì±â ÇÔ¼ö¸¦ Å×½ºÆ®ÇÑ´Ù.

 

Pen P(Color(255,0,0),5);

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

 

G.DrawEllipse(&P,10,10,90,90);

G.DrawRectangle(&P,110,10,90,90);

G.FillEllipse(&S,10,110,90,90);

G.FillRectangle(&S,110,110,90,90);

±½±â 5ÀÇ »¡°£»ö ÆæÀ¸·Î »ç°¢Çü°ú Ÿ¿øÀ» ±×¸®°í ÃÊ·Ï»ö ºê·¯½Ã·Î ¸éÀ» ä¿ö º¸¾Ò´Ù. ÀÌ ¿Ü¿¡ º°·Î ½Ç¿ë¼ºÀº ¾øÁö¸¸ ÁÖ¾îÁø Rect °´Ã¼ÀÇ ¹è¿­·ÎºÎÅÍ º¹¼ö °³ÀÇ »ç°¢ÇüÀ» ÇѲ¨¹ø¿¡ ±×¸®°Å³ª ä¿ì´Â Draw(Fill)Rectangles ÇÔ¼öµµ ÀÖ´Ù. ÇÔ¼ö¸í ³¡¿¡ º¹¼ö¸¦ ÁöÁ¤ÇÏ´Â s°¡ ÀÖÀ½À» ÁÖÀÇÇÏÀÚ. RectÀÇ ¹è¿­°ú °³¼ö¸¦ Àü´ÞÇÏ¸é ¹è¿­³»ÀÇ ¸ðµç »ç°¢ÇüÀ» ±×¸®°Å³ª ä¿î´Ù.

 

Status DrawRectangles(const Pen *pen, const Rect *rects, INT count);

Status FillRectangles(const Brush *brush, const Rect *rects, INT count);

 

GDIÀÇ Rectangle ÇÔ¼ö¿Í GDI+ÀÇ DrawRectangle ÇÔ¼ö´Â »ç°¢ÇüÀ» ±×¸°´Ù´Â ¸é¿¡¼­ µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÏÁö¸¸ ¸î °¡Áö Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. GDI¿Í GDI+ ÀÚüÀÇ Â÷ÀÌÁ¡À̶ó°í ÇÒ ¼ö Àִµ¥ ÀÌ µÎ ÇÔ¼ö¿¡¼­ Â÷ÀÌ°¡ °¡Àå ¸íÈ®ÇÏ°Ô º¸À̹ǷΠ¿©±â¼­ ±× Â÷ÀÌÁ¡À» ¿¬±¸ÇØ º¸ÀÚ. ¸ÕÀú ±×¸®°íÀÚ ÇÏ´Â »ç°¢ÇüÀ» ÀԷ¹޴ ¹æ¹ýÀÌ ´Ù¸¥µ¥ GDI´Â LTRB ¹æ½ÄÀÇ ÁÂÇ¥¸¦ ¾²°í GDI+´Â XYWH ¹æ½ÄÀ» ¾´´Ù.

¾ÕÂÊ µÎ °³ÀÇ Àμö´Â µÎ ¹æ½Ä ¸ðµå Á»ó´Ü ÁÂÇ¥ÀÌÁö¸¸ µÚÂÊ µÎ ÀμöÀÇ Àǹ̴ ´Ù¸£´Ù. RectangleÀÇ Àμö´Â ¿ìÇÏ´ÜÁ¡ÀÇ ÁÂÇ¥¸¦ ÁöÁ¤ÇÏ°í DrawRectangleÀº »ç°¢ÇüÀÇ Æø°ú ³ôÀ̸¦ ³ªÅ¸³½´Ù. ÀÌ´Â ´Ü¼øÇÑ Ç¥Çö»óÀÇ Â÷ÀÌÀÏ»ÓÀ̹ǷΠ°£´ÜÇÑ ¼ö½ÄÀ¸·Î ¾ðÁ¦µçÁö º¯È¯ °¡´ÉÇÏ´Ù. ¿¹¸¦ µé¾î Rectangle(l,t,r,b)´Â DrawRectangle(l,t,r-l,b-t)¿Í µ¿ÀÏÇÏ¸ç ¹Ý´ëÂÊÀ¸·Îµµ ½±°Ô º¯È¯µÈ´Ù.

ÀμöÀÇ Çü½ÄÀûÀÎ Â÷ÀÌ¿Ü¿¡ ³¡Á¡ÀÇ Æ÷ÇÔ ¿©ºÎ°¡ ´Ù¸£´Ù. GDI´Â Ç×»ó ³¡Á¡À» ±×¸®±â¿¡¼­ Á¦¿ÜÇϴµ¥ ºñÇØ GDI+´Â Æ÷ÇÔÇÑ´Ù´Â Áß¿äÇÑ Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. ÀÌ Â÷ÀÌ·Î ÀÎÇØ ÃÖÁ¾ÀûÀ¸·Î ±×·ÁÁö´Â µµÇüÀÇ ¸ð¾çÀÌ ´Þ¶óÁø´Ù. ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

G.DrawRectangle(&Pen(Color(0,0,0)),10,10,90,90);

Rectangle(hdc,110,10,200,100);

Rectangle(hdc,10,110,100,200);

 

int i;

for (i=0;i<=300;i+=50) {

     G.DrawRectangle(&Pen(Color(0,0,0)),i,210,50,50);

     Rectangle(hdc,i,270,i+50,320);

}

 

DrawRectangle·Î 90 Å©±âÀÇ Á¤»ç°¢ÇüÀ» ±×·È´Ù. ±×¸®°í ±× ¿À¸¥ÂÊ°ú ¿ÞÂÊ¿¡ ¶È°°Àº Å©±âÀÇ Á¤»ç°¢ÇüÀ» Rectangle·Î ±×·È´Ù. ÀμöÀÇ Çü½Ä¸¸ ´Ù¸¦ »Ó Æø°ú ³ôÀÌ´Â ¸ðµÎ 90À¸·Î Á¤È®ÇÏ°Ô ÁÖ¾ú´Ù. ±×·¯³ª ¸·»ó ½ÇÇàÇØ º¸¸é ±×·ÁÁø »ç°¢ÇüÀÇ Å©±â°¡ ´Ù¸£°Ô ³ªÅ¸³­´Ù.

´Ü 1Çȼ¿ Â÷À̹ۿ¡ ¾È³ª±â ¶§¹®¿¡ ´«¿¡ Àß ¶çÁö ¾Ê´Âµ¥ ¼¼ »ç°¢ÇüÀÌ ÀÎÀüÇÑ ºÎºÐÀ» Å©°Ô È®´ëÇØ º¸¸é Â÷ÀÌ°¡ ºÐ¸íÈ÷ º¸ÀδÙ.

DrawRectangle·Î ±×¸° »ç°¢ÇüÀº 10ºÎÅÍ ½ÃÀÛÇؼ­ Æø 90¸¸Å­ÀÎ 100Çȼ¿ À§Ä¡±îÁö »ç°¢ÇüÀ» ±×¸®´Âµ¥ ºñÇØ Rectangle·Î ±×¸° »ç°¢ÇüÀº yÁÂÇ¥ 200À» ÁöÁ¤Çصµ ½ÇÁ¦·Î´Â 199±îÁö¸¸ ±×¸®°í xÁÂÇ¥ 100À» ÁöÁ¤Çصµ 99±îÁö¸¸ ±×¸°´Ù. ´ÜÀÏ »ç°¢ÇüÀ» ±×¸± ¶§´Â ÀÌ Á¤µµ Â÷À̸¦ °ÅÀÇ ´«Ä¡Ã§ ¼ö ¾øÁö¸¸ ¹ÙµÏÆÇ°°Àº ¿¬¼ÓµÈ »ç°¢ÇüÀ» ±×·Áº¸¸é Â÷ÀÌ°¡ ºÐ¸íÈ÷ ³ªÅ¸³­´Ù.

¾Æ·¡ÂÊÀÇ ÄÚµå´Â 50Çȼ¿ °£°ÝÀ¸·Î »ç°¢ÇüÀ» ¿¬¼ÓÇÏ¿© ±×¸° °ÍÀε¥ GDI+·Î ±×¸° »ç°¢ÇüÀº ¿ÞÂÊ »ç°¢ÇüÀÇ ³¡ ÁÂÇ¥¿Í ¿À¸¥ÂÊ »ç°¢ÇüÀÇ ½ÃÀÛ ÁÂÇ¥°¡ ÀÏÄ¡ÇÏ¿© µÎ »ç°¢ÇüÀÇ °æ°è¿¡ Á÷¼±ÀÌ Çϳª¹Û¿¡ ¾ø´Ù. ¹Ý¸é GDI·Î ±×¸° »ç°¢ÇüÀº ¿ÞÂÊ »ç°¢ÇüÀÇ ³¡ ÁÂÇ¥°¡ ¿À¸¥ÂÊ »ç°¢ÇüÀÇ ½ÃÀÛ ÁÂÇ¥º¸´Ù 1 ÀÛ¾Æ °æ°è¸é¿¡ ¼±ÀÌ µÎ °³·Î ³ªÅ¸³­´Ù. ¼öÁ÷À¸·Îµµ »ç°¢ÇüÀ» °è¼Ó Ãâ·ÂÇÑ´Ù¸é ¾Æ·¡ À§ »ç°¢ÇüÀÇ º¯µéµµ ÀÌÁßÀ¸·Î Ç¥½ÃµÉ °ÍÀÌ´Ù.

±×·¸´Ù¸é GDI¿Í GDI+ÀÇ ÁÂÇ¥ Çؼ® ¹æ¹ýÁß °ú¿¬ ¾î¶² °ÍÀÌ ¿ÇÀº °ÍÀϱî? ÀÌ¿¡ ´ëÇÑ Á¤´äÀº »ç½Ç»ó ¾ø´Ù. °æ¿ì¿¡ µû¶ó ³¡ ÁÂÇ¥¸¦ Æ÷ÇÔÇÏ´Â°Ô ¸ÂÀ» ¼öµµ ÀÖ°í Á¦¿ÜÇÏ´Â°Ô ¾î¿ï¸®´Â °æ¿ìµµ ÀÖ´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î ¾ê±âÇÏÀÚ¸é GDIÀÇ ¹æ½ÄÀÌ ÈξÀ ´õ »ó½ÄÀûÀÌ°í ½Ç¿ëÀûÀÌ´Ù. À§ ¿¹Á¦ÀÇ °á°ú¸¸ º¸¸é °æ°è ºÎ±ÙÀÌ ÇÑÁٷθ¸ Ãâ·ÂµÇ´Â GDI+ÀÇ Ãâ·ÂÀÌ ´õ ÁÁ¾Æ º¸ÀÌ´Â °Í °°´Ù. ±×·¯³ª ¸¸¾à °¢ »ç°¢ÇüÀÇ »ö»óÀÌ ¸ðµÎ ´Ù¸£´Ù°í °¡Á¤ÇØ º¸¸é GDIÀÇ ¹æ½ÄÀÌ ´ç¿¬È÷ ¿Ç´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

Áß¿äÇÑ °ÍÀº ¾î¶² ¹æ½ÄÀÌ ¿ÇÀº°¡ÇÏ´Â ³íÀïÀÌ ¾Æ´Ï¶ó GDI+´Â ³¡ ÁÂÇ¥¸¦ Æ÷ÇÔÇÑ´Ù´Â °ÍÀ» ¾Æ´Â °ÍÀÌ´Ù. Ư¼ºÀ» Á¦´ë·Î ¾Ë°í¸¸ ÀÖ´Ù¸é »óȲ¿¡ µû¶ó Á¶Á¤ÀÌ °¡´ÉÇØÁø´Ù. ¿¬¼ÓÀûÀÎ µµÇüÀ» ±×¸± ¶§ ³¡ ÁÂÇ¥¸¦ Á¦¿ÜÇÏ°í ½Í´Ù¸é ÆøÀ» 1 ´õ ÀÛ°Ô ÁÖ¸é ¿øÇϴ´ë·Î ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± Ư¼ºÀ» Àß ¸ð¸£¸é ÁÂÇ¥¸¦ Á¤È®ÇÏ°Ô ÁÖ¾ú´Âµ¥µµ Ãâ·ÂÀÌ ÀÌ»óÇÏ°Ô ³ª¿À¹Ç·Î ÁÖÀÇÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

¸¶.´Ù°¢Çü

´Ù°¢ÇüÀ» ±×¸± ¶§´Â DrawPolygon ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ¿øÇüÀº DrawLines¿Í µ¿ÀÏÇ쵂 ½ÃÀÛÁ¡°ú ³¡Á¡À» °­Á¦·Î ¿¬°áÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ´Ù°¢ÇüÀ» ä¿ï ¶§´Â ¹°·Ð FillPolygon ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ¸¶Áö¸· Àμö·Î ´Ù°¢Çü ä¿ì±â ¸ðµå¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù.

 

Status DrawPolygon(const Pen *pen, const Point *points, INT *count);

Status FillPolygon(const Brush *brush, const Point *points, INT count);

 

¹è¿­¿¡ ´Ù°¢ÇüÀ» ±¸¼ºÇÏ´Â Á¡ÀÇ ÁÂÇ¥¸¦ ÀÛ¼ºÇÏ°í ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. ´ÙÀ½ ÄÚµå´Â ¿ì¸®³ª¶ó Áöµµ¸¦ ´Ù°¢ÇüÀ¸·Î ±×·Á º» °ÍÀÌ´Ù.

 

Pen P(Color(0,0,255),2);

SolidBrush S(Color(200,200,200));

Point pts[]={Point(292,6),Point(331,45),Point(307,45),Point(269,77),

     Point(274,111),Point(251,116),Point(207,149),Point(165,155),

     Point(161,190),Point(201,206),Point(239,270),Point(258,287),

     Point(257,306),Point(249,313),Point(251,335),Point(263,333),

     Point(252,364),Point(231,380),Point(203,378),Point(201,392),

     Point(181,391),Point(157,389),Point(143,404),Point(117,402),

     Point(108,416),Point(95,403),Point(108,393),Point(96,378),

     Point(121,341),Point(109,302),Point(96,303),Point(95,292),

     Point(114,285),Point(132,292),Point(121,267),Point(114,243),

     Point(74,231),Point(72,251),Point(26,231),Point(70,205),

     Point(51,198),Point(71,166),Point(13,142),Point(90,103),

     Point(132,73),Point(151,56),Point(161,71),Point(202,79),

     Point(211,66),Point(206,51),Point(241,49),Point(266,30),

     Point(282,26),Point(283,7)};

 

G.FillPolygon(&S,pts,sizeof(pts)/sizeof(pts[0]));

G.DrawPolygon(&P,pts,sizeof(pts)/sizeof(pts[0]));

¸ð´« Á¾ÀÌ¿¡ ¿øÇÏ´Â µµÇüÀ» ±×·Á ³õ°í ÀÏÀÏÀÌ ÁÂÇ¥¸¦ ±¸ÇØ ¹è¿­¿¡ ±× °ªÀ» ½á ÁÖ¾î¾ß ÀÌ·± ±×¸²À» ±×¸± ¼ö ÀÖ´Ù. ÀÌ ÁÂÇ¥¸¦ µû´Âµ¥ Çѽð£ Á¤µµ°¡ °É·È´Âµ¥ ÁÂÇ¥¸¸ Àß µû¸é ¾î¶°ÇÑ º¹ÀâÇÑ µµÇüµµ ±×¸± ¼ö ÀÖ´Â ¼ÀÀÌ´Ù. ´ÙÀ½ ÇÔ¼öµéÀº ¿øÈ£¿Í ºÎä²ÃÀ» ±×¸°´Ù.

 

Status DrawArc(const Pen *pen, const Rect &rect, REAL startAngle, REAL sweepAngle);

Status DrawPie(const Pen *pen, const Rect &rect, REAL startAngle, REAL sweepAngle);

Status FillPie(const Brush *brush, const Rect &rect, REAL startAngle, REAL sweepAngle);

 

¿øÀÇ ¿ÜÁ¢ »ç°¢ÇüÀ» ÁöÁ¤ÇÏ°í ½ÃÀÛ °¢µµ¿Í ±æÀ̸¦ Àμö·Î ÁöÁ¤ÇÑ´Ù. °¢µµ´Â ¼¼½Ã¹æÇâÀ» ¿øÁ¡À¸·Î ÇÏ´Â 360ºÐ¹ýÀÇ °¢µµÀÌµÇ ¾ç¼öÀÌ¸é ½Ã°è ¹æÇâÀ», À½¼öÀÌ¸é ¹Ý½Ã°è ¹æÇâÀ» ÁöÁ¤ÇÑ´Ù. GDIÀÇ ¿ø ÇÔ¼öµéÀÌ ¶óµð¾ÈÀ» »ç¿ëÇϴµ¥ ºñÇØ GDI+´Â Àΰ£¿¡°Ô Á» ´õ Ä£¼÷ÇÑ °¢µµ¸¦ »ç¿ëÇϹǷΠÆí¸®ÇÏ´Ù. startAngleÀº ½ÃÀÛ°¢µµ, sweepAngleÀº ¿øÈ£ÀÇ Áö¼Ó°¢µµÀÌ´Ù. DrawPie ÇÔ¼ö´Â ¿øÈ£¸¦ ±×¸®°í ¿øÁÖÀÇ ¾ç ³¡À» ¿øÀÇ Á߽ɰú ¿¬°áÇÏ¿© ºÎä²ÃÀ» ±×¸°´Ù. ¿øÈ£´Â Æó°î¼±ÀÌ ¾Æ´Ï¹Ç·Î FillArc°°Àº ä¿ì±â ÇÔ¼ö°¡ ¾ø´Ù. ´ÙÀ½Àº Å×½ºÆ® ÄÚµåÀÌ´Ù.

 

Pen P(Color(0,0,0));

SolidBrush S(Color(128,128,128));

 

G.DrawArc(&P,10,10,90,90,15.0f,120.0f);

G.DrawPie(&P,110,10,90,90,-15.0f,45.0f);

G.FillPie(&S,10,110,90,90,-15.0f,45.0f);

GDI+°¡ ¿øÀ» Á¦´ë·Î ±×¸®´ÂÁö Å×½ºÆ®ÇØ º¸±â À§ÇØ ¿øÈ£ Çϳª¿Í ºÎä²Ã, ±×¸®°í ³»ºÎ¸¦ ä¿î ºÎä²ÃÀ» ±×·Á º¸¾Ò´Ù. ¹°·Ð Àß ±×¸°´Ù.

¹Ù.°î¼±

GDI+´Â Ä«µð³Î, º£Áö¾î µÎ °¡Áö Á¾·ùÀÇ °î¼±À» Áö¿øÇÑ´Ù. Ä«µð³Î °î¼±Àº Ã¥¹Þħó·³ Èֱ⠽¬¿î ¹°Ã¼ÀÇ Áß°£À» Àâ°í ±¸ºÎ¸± ¶§ °î¼±ÀÌ ¸¸µé¾îÁö´Â ¿ø¸®¸¦ »ç¿ëÇÏ´Â ±âº»ÀûÀÎ °î¼±ÀÌ´Ù.

 

Status DrawCurve(const Pen *pen, const Point *points, INT count, REAL tension);

 

°î¼±ÀÌ Åë°úÇÏ´Â Á¡ÀÇ ¹è¿­À» ÁÖ°í tensionÀμö·Î °î¼±¿¡ Àû¿ëµÉ Àå·ÂÀ» ÁöÁ¤Çϸé Àå·Â´ë·Î °î¼±ÀÌ ±×·ÁÁø´Ù. Àå·ÂÀÌ 0ÀÌ¸é ¿ÏÀüÇÑ Á÷¼±ÀÌ ±×·ÁÁö¸ç 1ÀÌ¸é °æ·ÎÁ¡À» Åë°úÇÏ´Â ºÎµå·¯¿î °î¼±ÀÌ ±×·ÁÁø´Ù. ´ÙÀ½ ÄÚµå´Â Àå·Â¿¡ µû¶ó ¾î¶² °î¼±ÀÌ ±×·ÁÁö´ÂÁö¸¦ Å×½ºÆ®Çϴµ¥ ½ÇÇàÁß¿¡ Å°º¸µåÀÇ »óÇÏ Ä¿¼­ À̵¿Å°·Î Àå·ÂÀ» Á¶Á¤Çϵµ·Ï Çß´Ù.

 

#include <tchar.h>

float tension=0.0;

TCHAR Mode=TEXT('1');

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

     ....

          // Ä«µð³Î °î¼±

          {

          Point pts[]={Point(10,100),Point(50,10),Point(100,150),Point(200,100)};

          Pen P(Color(0,0,0));

 

          G.DrawCurve(&P,pts,4,tension);

          TCHAR str[128];

          _stprintf_s(str,128,TEXT("Àå·Â : %.1f"),tension);

          TextOut(hdc,10,200,str,lstrlen(str));

          }

          break;

 

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

{

     HDC hdc;

     PAINTSTRUCT ps;

 

     switch(iMessage) {

     case WM_KEYDOWN:

          if (Mode == TEXT('7')) {

              switch (wParam) {

              case VK_UP:

                   tension += 0.1f;

                   InvalidateRect(hWnd,NULL,TRUE);

                   return 0;

              case VK_DOWN:

                   tension -= 0.1f;

                   InvalidateRect(hWnd,NULL,TRUE);

                   return 0;

              }

          }

          Mode=(TCHAR)wParam;

          InvalidateRect(hWnd,NULL,TRUE);

          return 0;

          ....

 

Àü¿ª º¯¼ö tensionÀ» 0À¸·Î ÃʱâÈ­ÇÏ°í OnPaint¿¡¼­´Â ÀÌ º¯¼ö¸¦ Ä«µð³Î °î¼±ÀÇ Àå·ÂÀ¸·Î »ç¿ëÇÑ´Ù. WndProc¿¡¼­´Â »óÇÏ Ä¿¼­ À̵¿Å°·Î tension º¯¼öÀÇ °ªÀ» 0.1¾¿ Áõ°¨½ÃÅ°¸ç È­¸éÀ» ´Ù½Ã ±×¸°´Ù. ¿¹Á¦¸¦ ½ÇÇàÇØ º¸¸é Àå·ÂÀÌ °î¼±ÀÇ ¸ð¾ç¿¡ ¾î¶² ¿µÇâÀ» ¹ÌÄ¡´ÂÁö¸¦ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.

   

Ä«µð³Î Æó°î¼±À» ±×¸± ¶§´Â Draw(Fill)ClosedCurve ÇÔ¼ö¸¦ »ç¿ëÇϴµ¥ ½ÃÀÛÁ¡°ú ³¡Á¡À» °­Á¦·Î ¿¬°áÇÏ¿© °î¼±À» ´Ý°í ³»ºÎ¸¦ ä¿î´Ù.

º£Áö¾î °î¼±Àº ½ÃÀÛÁ¡, ³¡Á¡°ú µÎ °³ÀÇ Á¶ÀýÁ¡À¸·Î ±¸¼ºµÈ´Ù. DrawBezier ÇÔ¼ö·Î ±×¸®´Âµ¥ Win32ÀÇ º£Áö¾î °î¼±°ú µ¿ÀÏÇÑ °î¼±À» ±×¸°´Ù. ´ÙÀ½Àº Å×½ºÆ® ÄÚµåÀÌ´Ù.

 

Pen P(Color(0,0,0));

 

G.DrawBezier(&P,Point(10,150), Point(200,0), Point(100,400),Point(400,150));

½ÃÀÛÁ¡, ³¡Á¡À» µÎ ¹ø°, ´Ù¼¸ ¹ø° Àμö·Î ÁöÁ¤ÇÏ°í ±× »çÀÌ¿¡ µÎ °³ÀÇ Á¶ÀýÁ¡ÀÇ ÁÂÇ¥¸¦ Àü´ÞÇÏ¸é µÈ´Ù. ¿©·¯ °³ÀÇ º£Áö¾î °î¼±À» ±×¸®°í ½ÍÀ» ¶§´Â DrawBeziers ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.