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ÀÇ ¸ñÀû Áß Çϳª¶ó°í ÇÒ ¼ö ÀÖ´Ù. Çö´ëÀÇ ¶óÀ̺귯¸®µéÀº »ç¿ëÀÚµéÀÌ Á¶±ÝÀÌ¶óµµ Çʿ並 ´À³¥¸¸ÇÑ ÇÔ¼öµéÀ» ¸ðµÎ Á¦°øÇÑ´Ù°í º¸¸é Ʋ¸² ¾øÀ¸¹Ç·Î ÇÊ¿äÇÒ ¶§ °Ë»öÇصµ ´ÊÁö ¾Ê´Ù.