7.ÆùÆ®

°¡.DrawString

GDI+ÀÇ ¹®ÀÚ¿­ Ãâ·Â ±â´ÉÀº GDI¿¡ ºñÇؼ­ ¾ÈƼ ¾Ë¸®¾Æ½ÌÀÌ °¡´ÉÇÏ´Ù´Â °Í ¿Ü¿¡´Â ½Ç¿ëÀûÀ¸·Î ¿ì¼öÇÑ ¸éÀÌ º°·Î ¾ø´Ù. ´ÜÁö, ÆùÆ®¸¦ »ý¼ºÇÏ°í ¼±ÅÃÇÏ´Â ¹æ½Ä°ú ¹®ÀÚ¿­ Ãâ·Â¿¡ ´ëÇÑ ¿É¼ÇÀÌ Á» ¸¹´Ù´Â Á¤µµ¿¡ ºÒ°úÇÏ´Ù. ¹°·Ð GDI+ÀÇ ¶Ç´Ù¸¥ ´É·Â, ¿¹¸¦ µé¾î ±×·¡µð¾ðÆ® ºê·¯½Ã³ª ¾ËÆÄ ºí·£µù µîÀÇ ±â´É°ú °áÇյǸé GDIº¸´Ù´Â ÈξÀ ´õ ´Ù¾çÇÑ ÇüÅÂÀÇ Ãâ·ÂÀ» ÇÒ ¼ö ÀÖ´Ù.

´Ü¼øÈ÷ ¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â °Í¸¸ÀÌ ¸ñÀûÀ̶ó¸é GDI+ÀÇ ÅؽºÆ® Ãâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù GDIÀÇ TextOut ÇÔ¼ö¸¦ ¾²´Â °ÍÀÌ ÈξÀ ´õ °£ÆíÇÏ´Ù. TextOutÀº ÆùÆ®¸¦ ¸¸µéÁö ¾Ê¾Æµµ ½Ã½ºÅÛ ÆùÆ®¸¦ Àû¿ëÇϸç ANSI ¹®ÀÚ¿­µµ Ãâ·ÂÇÒ ¼ö ÀÖ°í ÀÌ¹Ì Àͼ÷ÇØ ÀÖÀ¸¹Ç·Î º°´Ù¸¥ ³ë·ÂÀ» µéÀÌÁö ¾Ê°íµµ ¹®ÀÚ¿­À» ½±°Ô Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.

¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â ÇÔ¼ö´Â DrawStringÀÌ¸ç ´Ù¸¥ ÀÛµµ ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î Graphics Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î Æ÷ÇԵǾî ÀÖ´Ù. Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ý°ú ¼±Åà ¿É¼ÇÀÇ À¯¹«¿¡ µû¶ó ¼¼ °¡Áö ¹öÀüÀÇ ÇÔ¼ö°¡ ÁغñµÇ¾î Àִµ¥ ¾ÕÂÊ¿¡¼­ºÎÅÍ ¼¼ °³ÀÇ Àμö´Â °øÅëÀûÀÌ¸ç ³ª¸ÓÁö Àμöµé·Î ¿É¼ÇÀ̳ª ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù.

 

Status DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const Brush *brush);

Status DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const StringFormat *stringFormat, const Brush *brush);

Status DrawString(const WCHAR *string, INT length, const Font *font, const RectF &layoutRect, const StringFormat *stringFormat, const Brush *brush);

 

»ó´ëÀûÀ¸·Î °£´ÜÇÑ Ã¹ ¹ø° ÇÔ¼öºÎÅÍ ¾Ë¾Æº¸ÀÚ. stringÀº Ãâ·ÂÇÒ ¹®ÀÚ¿­ÀÌµÇ ¹Ýµå½Ã À¯´ÏÄÚµå ¹®ÀÚ¿­À̾î¾ß ÇÑ´Ù. length´Â Ãâ·ÂÇÒ ¹®ÀÚ¿­ÀÇ ±æÀÌÀÌµÇ ³Î Á¾·á ¹®ÀÚ¿­À̸é -1·Î ÁöÁ¤ÇÏ¸é µÈ´Ù. font´Â Ãâ·Â¿¡ »ç¿ëÇÒ ÆùÆ®¸¦ ÁöÁ¤ÇÏ´Â Font °´Ã¼ÀÇ Æ÷ÀÎÅÍÀ̸ç GDI+´Â ÀÌ ÆùÆ®·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÑ´Ù. ÆùÆ®¸¦ ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇؼ­´Â ´ÙÀ½ Ç׿¡¼­ µû·Î ¿¬±¸ÇØ º¼ °ÍÀÌ´Ù. originÀº ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ÁÂÇ¥À̸ç brush´Â ¹®ÀÚ¿­ÀÇ È¹À» ä¿ï ºê·¯½ÃÀÌ´Ù.

¹®ÀÚ¿­ÀÇ È¹ÀÌ ±½°Å³ª ±×·¡ÇÈ ¹®ÀÚ(¡Ú,¢¼,¢Ï)ó·³ ³»ºÎ¿¡ ³ÐÀº ¿µ¿ªÀÌ ÀÖ´Â ±ÛÀÚÀÇ °æ¿ì ȹÀÌ ¼±À¸·Î Ç¥½ÃµÇÁö ¾Ê°í ¸éÀ¸·Î Ç¥½ÃµÇ´Âµ¥ À̶§ ³»ºÎ¸¦ ä¿ï ºê·¯½Ã°¡ ÇÊ¿äÇÏ´Ù. Åë»ó ´Ü»ö ºê·¯½Ã¸¦ ÁöÁ¤Çϴµ¥ ÀÌ ºê·¯½ÃÀÇ »ö»óÀÌ °ð Ãâ·ÂµÉ ¹®ÀÚ¿­ÀÇ »ö»óÀÌ µÈ´Ù. ¹®ÀÚ¿­ Ãâ·Â Å×½ºÆ®¸¦ À§ÇØ DrawString ¿¹Á¦¸¦ ¸¸µé°í ´ÙÀ½ Äڵ带 ÀÔ·ÂÇØ º¸ÀÚ.

 

¿¹ Á¦ : DrawString

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

     Font F(L"Arial",20,FontStyleRegular,UnitPixel);

     PointF P(10.0f,10.0f);

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

    

     G.DrawString(L"Test String",-1,&F,P,&B);

}

ArialÀÇ 20Çȼ¿ º¸Åë ¸ð¾çÀÇ ÆùÆ®¸¦ ¸ÕÀú »ý¼ºÇØ ³õ°í (10,10) ÁÂÇ¥¿¡ "Test String"À̶ó´Â ³Î Á¾·á ¹®ÀÚ¿­À» ÆĶõ»ö ºê·¯½Ã·Î Ãâ·ÂÇß´Ù. ȹÀÌ ±½Àº ±Û²Ã¿¡ ´ëÇØ ÇØÄ¡ ºê·¯½Ã³ª ±×·¡µð¾ðÆ® ºê·¯½Ã¸¦ »ç¿ëÇÏ¸é ¹®ÀÚ¿­ÀÇ È¹ ³»ºÎ¸¦ »ö´Ù¸£°Ô ä»öÇÒ ¼öµµ ÀÖ°í ¹ÝÅõ¸íÇÑ ºê·¯½Ã¸¦ »ç¿ëÇϸé Á¡Á¡ Èå·ÁÁö´Â ±ÛÀÚ¸¦ ¸¸µé ¼öµµ ÀÖ´Ù.

 

Font F(L"±Ã¼­",100,FontStyleBold,UnitPixel);

HatchBrush HB(HatchStyleWeave,Color(255,0,0),Color(255,255,0));

LinearGradientBrush GB(Point(10,0),Point(600,0),Color(0,255,0),Color(0,0,255));

    

G.DrawString(L"ÇØÄ¡ ºê·¯½Ã",-1,&F,PointF(10.0f,10.0f),&HB);

G.DrawString(L"±×·¡µð¾ðÆ®",-1,&F,PointF(10.0f,110.0f),&GB);

DrawStringÀÇ µÎ ¹ø° ¿øÇüÀº ¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â ¹æ½ÄÀ» ÁöÁ¤ÇÏ´Â StringFormat °´Ã¼¸¦ Àμö·Î ¹Þ¾ÆµéÀ̴µ¥ ÀÌ °´Ã¼ÀÇ »ý¼ºÀÚ·Î ¿©·¯ °¡Áö Ç÷¡±×¸¦ OR·Î Á¶ÇÕÇÏ¿© ÁöÁ¤ÇÑ´Ù. ´ÙÀ½°ú °°Àº Ç÷¡±×°¡ Á¦°øµÈ´Ù.

 

Ç÷¡±×

¼³¸í

StringFormatFlagsDirectionRightToLeft

¹®ÀÚ¿­À» ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î Ãâ·ÂÇÑ´Ù.

StringFormatFlagsDirectionVertical

¼¼·Î·Î Ãâ·ÂÇÑ´Ù.

StringFormatFlagsNoFitBlackBox

ÀϺΠ¹®ÀÚ°¡ Ãâ·Â ¿µ¿ª¿¡ °ÉÄ¥ ¼öµµ ÀÖ´Ù.

StringFormatFlagsDisplayFormatControl

Á¦¾î ¹®ÀÚ¸¦ Ãâ·ÂÇÑ´Ù.

StringFormatFlagsNoFontFallback

ÆùÆ®¿¡ ¾ø´Â ¹®ÀÚ¸¦ ´ëü ¹®ÀÚ·Î ¹Ù²ÙÁö ¾Ê´Â´Ù.

StringFormatFlagsMeasureTrailingSpaces

ÆøÀ» °è»êÇÒ ¶§ ÈÄÇà °ø¹éÀÇ ÆøÀ» Æ÷ÇÔÇÑ´Ù.

StringFormatFlagsNoWrap

»ç°¢ ¿µ¿ª¿¡ Ãâ·ÂÇÒ ¶§ ÀÚµ¿ ÁٹٲÞÀ» ÇÏÁö ¾Ê´Â´Ù.

StringFormatFlagsLineLimit

¿ÏÀüÈ÷ ´Ù º¸ÀÌ´Â ÁÙ¸¸ Ãâ·ÂÇÑ´Ù.

StringFormatFlagsNoClip

Ãâ·Â ¿µ¿ªÀ» ¹þ¾î³ªµµ ¹®ÀÚ¿­À» ÀÚ¸£Áö ¾Ê´Â´Ù.

 

Ç÷¡±×ÀÇ À̸§ÀÌ ¿ö³« ¼³¸íÀûÀ̾ ¼³¸íÀ» µû·Î ÀÐÁö ¾Ê¾Æµµ µÉ Á¤µµ·Î ½±´Ù. ´ÙÀ½ ÄÚµå´Â ¹®ÀÚ¿­À» ¼öÁ÷À¸·Î Ãâ·ÂÇÑ´Ù.

 

Font F(L"Arial",20,FontStyleRegular,UnitPixel);

PointF P(10.0f,10.0f);

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

StringFormat SF(StringFormatFlagsDirectionVertical);

    

G.DrawString(L"Test String",-1,&F,P,&SF,&B);

ÀÌ¿Ü¿¡ Á¤·ÄÀ̳ª ÅÇ Á¤ÁöÁ¡ µîÀ» ¼³Á¤ÇÏ´Â ¸â¹ö ÇÔ¼öµéµµ Àִµ¥ »ç°¢ ¿µ¿ª¿¡ ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¶§ ÁÖ·Î »ç¿ëµÈ´Ù. DrawStringÀÇ ¼¼ ¹ø° ¿øÇüÀº »ç°¢ ¿µ¿ª¾È¿¡ ¹®ÀÚ¿­À» Ãâ·ÂÇϴµ¥ GDIÀÇ DrawText ÇÔ¼ö¿Í À¯»çÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. º°´Ù¸¥ ¿É¼ÇÀ» ÁÖÁö ¾ÊÀ» ¶§´Â StringFormatÀ» NULL·Î ÁöÁ¤ÇÑ´Ù.

 

Font F(L"Arial",20,FontStyleRegular,UnitPixel);

RectF R(10,10,200,200);

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

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

 

G.DrawRectangle(&P,R);

G.DrawString(L"DrawString function draws a string in layout rectangle"

     L" with a specified font.",-1,&F,R,NULL,&B);

Ưº°ÇÑ Æ÷¸ËÀ» ÁöÁ¤ÇÏ°í ½ÍÀ¸¸é StringFormat °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ Æ÷¸ËÀ» ÁöÁ¤Çϴµ¥ ´ÙÀ½ ÄÚµå´Â ¹®ÀÚ¿­À» Áß¾ÓÀ¸·Î Á¤·ÄÇÑ´Ù.

 

Font F(L"Arial",20,FontStyleRegular,UnitPixel);

RectF R(10,10,200,200);

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

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

StringFormat SF;

    

SF.SetAlignment(StringAlignmentCenter);

SF.SetLineAlignment(StringAlignmentCenter);

G.DrawRectangle(&P,R);

G.DrawString(L"DrawString function draws a string in layout rectangle"

     L" with a specified font.",-1,&F,R,&SF,&B);

StringFormat Ŭ·¡½º¿¡´Â ¹®ÀÚ¿­ÀÇ Á¤·Ä ¹æ½ÄÀ̳ª ÅÇ Á¤ÁöÁ¡, & ¹®ÀÚ ´ÙÀ½ÀÇ ¼îÆ®ÄÆ ¹®ÀÚ ÁöÁ¤À» ó¸®ÇÏ´Â ¹æ½ÄÀ» º¯°æÇÒ ¼ö ÀÖ´Â ¸â¹ö ÇÔ¼öµéÀÌ ÁغñµÇ¾î ÀÖ´Ù.

³ª.ÆùÆ®

GDI+´Â ÆùÆ®¸¦ Font Ŭ·¡½º·Î Ç¥ÇöÇÑ´Ù. Font °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ DrawString ÇÔ¼ö·Î ÀÌ °´Ã¼ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ¸é ¹®ÀÚ¿­ Ãâ·Â¿¡ ÀÌ ÆùÆ®°¡ »ç¿ëµÈ´Ù. ´ÙÀ½Àº FontÀÇ »ý¼ºÀÚµéÀε¥ ÀÌ¿Ü¿¡ GDI¿ÍÀÇ È£È¯¼º À¯Áö¸¦ À§ÇØ LOGFONT ±¸Á¶Ã¼³ª HFONT¸¦ ÃëÇÏ´Â Àμöµéµµ Á¤ÀǵǾî ÀÖ´Ù.

 

Font(const WCHAR *familyName, REAL emSize, INT style, Unit unit, const FontCollection *fontCollection);

Font(const FontFamily *family, REAL emSize, INT style, Unit unit);

 

»ó´ëÀûÀ¸·Î °£´ÜÇÑ Ã¹ ¹ø° »ý¼ºÀÚºÎÅÍ ¾Ë¾Æº¸ÀÚ. familyNameÀº ÆùÆ®ÀÇ Æйи®¸¦ ÁöÁ¤Çϴµ¥ ŸÀÔÆäÀ̽ºÀÇ À̸§°ú °°À¸¸ç "Times New Roman", "¹ÙÅÁ" µî°ú °°ÀÌ ¿ì¸®°¡ ÈçÈ÷ ¾Ë°í ÀÖ´Â ÆùÆ®ÀÇ À̸§À̶ó°í »ý°¢ÇÏ¸é µÈ´Ù. emSize´Â ±Û²ÃÀÇ Å©±âÀ̸ç UnitÀÌ ÁöÁ¤ÇÏ´Â ´ÜÀ§¸¦ »ç¿ëÇÑ´Ù. È­¸é»óÀ¸·Î¸¸ Ãâ·ÂÇÑ´Ù¸é Çȼ¿ ´ÜÀ§¸¦ ÁÖ·Î »ç¿ëÇÏ°ÚÁö¸¸ Àμ⸦ °í·ÁÇÑ´Ù¸é Æ÷ÀÎÆ®³ª ÀÎÄ¡ ´ÜÀ§¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ À¯¸®ÇÏ´Ù. styleÀº ÆùÆ®ÀÇ ¸ð¾ç¸¦ ÁöÁ¤Çϸç 6°¡Áö Á¾·ù°¡ ÀÖ´Ù.

 

typedef enum {

    FontStyleRegular = 0,

    FontStyleBold = 1,

    FontStyleItalic = 2,

    FontStyleBoldItalic = 3,

    FontStyleUnderline = 4,

    FontStyleStrikeout = 8

} FontStyle;

 

±½°Ô, ¹ØÁÙ, ±â¿ïÀÓ, Ãë¼Ò¼± µîÀÇ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÏ´Â ¿­°Å »ó¼öµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ¸¶Áö¸· Àμö fontCollectionÀº ¼±ÅÃµÉ ÆùÆ®ÀÇ ÁýÇÕÀε¥ NULLÀÏ °æ¿ì ½Ã½ºÅÛÀÇ ÆùÆ® ÁýÇÕ Áß¿¡¼­ Çϳª¸¦ ¼±ÅÃÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â ±Ã¼­ 20¹Ð¸®¹ÌÅÍ Å©±âÀÇ ±½°Ô ±â¿ïÀÎ ½ºÅ¸ÀÏ·Î ±Û²ÃÀ» »ý¼ºÇÏ¿© ¹®ÀÚ¿­À» Ãâ·ÂÇÑ´Ù.

 

Font F(L"±Ã¼­",20,FontStyleBoldItalic,UnitMillimeter);

PointF P(10.0f,10.0f);

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

    

G.DrawString(L"ÇÑ±Û ¹®ÀÚ¿­",-1,&F,P,&B);

20¹Ð¸®¹ÌÅÍ·Î Å©±â¸¦ ÁöÁ¤ÇßÀ¸¹Ç·Î È­¸é¿¡´Â 20Çȼ¿º¸´Ù ÈξÀ ´õ Å« Å©±â·Î Ãâ·ÂµÉ °ÍÀÌ´Ù. GDI+´Â È­¸éÀÇ Çػ󵵸¦ ÂüÁ¶ÇÏ¿© 20¹Ð¸®¹ÌÅÍ°¡ È­¸é¿¡¼­ ¸î Çȼ¿ Å©±âÀÎÁö¸¦ °è»êÇÏ¿© ÀÌ Å©±â´ë·Î ÆùÆ®¸¦ »ý¼ºÇÑ´Ù. ¹°·Ð È­¸é»ó¿¡¼­´Â ÇØ»óµµ Á¤º¸ÀÇ ¿ÀÂ÷·Î ÀÎÇØ Á¤È®È÷ 20¹Ð¸®¹ÌÅÍ·Î Ãâ·ÂµÇÁö ¾ÊÁö¸¸ ¶È°°Àº Ãâ·Â¹®À» ÇÁ¸°ÅÍ¿¡ ´ëÇØ Àû¿ëÇϸé ÁöÁ¤ÇÑ Å©±â´ë·Î Á¤È®ÇÏ°Ô Ãâ·ÂµÈ´Ù.

Font Ŭ·¡½ºÀÇ µÎ ¹ø° »ý¼ºÀÚ´Â FontFamily ¿ÀºêÁ§Æ®¸¦ ¹Ì¸® ¸¸µé¾î ³õ°í ÆùÆ®¸¦ ¸¸µé ¶§ ÀÌ Á¤º¸¸¦ ÂüÁ¶ÇÑ´Ù. FontFamily Ŭ·¡½º´Â °°Àº ŸÀÔÆäÀ̽º¸¦ °¡Áö´Â ÆùÆ®ÀÇ ÁýÇÕÀ» ´Ù·ç´Âµ¥ ½±°Ô ¸»ÇØ Æ¯Á¤ À̸§À» °¡Áö´Â ÆùÆ® Çϳª¸¦ Ç¥ÇöÇÑ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù. »ý¼ºÀڷΠŸÀÔÆäÀ̽º À̸§À» ÁÖ¸é FontFamily °´Ã¼°¡ »ý¼ºµÇ¸ç ÀÌ °´Ã¼ÀÇ Æ÷ÀÎÅ͸¦ FontÀÇ »ý¼ºÀÚ·Î Àü´ÞÇÏ¸é ¿øÇÏ´Â ±Û²ÃÀÌ ¸¸µé¾îÁø´Ù. ¾Õ ÄÚµåÀÇ ÆùÆ® »ý¼º¹®À» ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇصµ °á°ú´Â µ¿ÀÏÇÏ´Ù.

 

FontFamily FM(L"±Ã¼­");

Font F(&FM,20,FontStyleBoldItalic,UnitMillimeter);

....

 

±×·¸´Ù¸é FontÀÇ »ý¼ºÀÚ·Î ÆùÆ® Æйи®¸¦ Á÷Á¢ ÁöÁ¤ÇÏ´Â °Í°ú FontFamily °´Ã¼¸¦ ¸ÕÀú ¸¸µç ÈÄ ÀÌ °´Ã¼¸¦ »ç¿ëÇÏ¿© ÆùÆ®¸¦ »ý¼ºÇÏ´Â °Í°ú´Â ¾î¶² Â÷ÀÌÁ¡ÀÌ ÀÖÀ»±î? °á°úÀûÀ¸·Î´Â º° Â÷ÀÌ°¡ ¾øÁö¸¸ »ý¼º °úÁ¤ÀÌ 2´Ü°è·Î ºÐ¸®µÊÀ¸·Î½á Áß°£¿¡ ¿¡·¯ 󸮸¦ ÇѴٰųª °°Àº Æйи®¸¦ ¿©·¯ ¹ø »ç¿ëÇÒ ¶§ Á¶±Ý ´õ Æí¸®ÇÏ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ´Ù.

FontFamily Ŭ·¡½º¿¡´Â IsAvailable, IsStyleAvailable µîÀÇ ¸â¹ö ÇÔ¼ö°¡ ÁغñµÇ¾î À־ ÀÌ ÆùÆ®°¡ »ç¿ë °¡´ÉÇÑÁö ¾Æ´ÑÁö µîÀ» ¹Ì¸® Á¶»çÇØ º¼ ¼ö ÀÖ´Ù. ´ÙÀ½ ÄÚµå´Â ÁöÁ¤ÇÑ Å¸ÀÔÆäÀ̽º°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§ ¿¡·¯ ó¸®ÇÑ´Ù. ±Û²ÃÀº ¾ðÁ¦µçÁö ¼³Ä¡, Á¦°ÅµÉ ¼ö ÀÖ´Â ´ë»óÀ̹ǷΠÇØ´ç ±Û²ÃÀÌ ÇöÀç ½Ã½ºÅÛ¿¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö¸¦ È®ÀÎÇÑ ÈÄ »ý¼ºÇÏ´Â °ÍÀÌ ¿øÄ¢ÀûÀÌ°í ¾ÈÀüÇÏ´Ù.

 

FontFamily FM(L"º´¾Æ¸® ´«¹°Ã¼");

if (!FM.IsAvailable()) {

     // ¿¡·¯ ó¸®;

}

 

FontCollection Ŭ·¡½º´Â ÆùÆ®ÀÇ ÁýÇÕÀ» ´Ù·ç´Â Ãß»ó Ŭ·¡½ºÀ̸ç ÀÌ Å¬·¡½º·ÎºÎÅÍ µÎ °³ÀÇ ÆÄ»ý Ŭ·¡½º°¡ »ó¼ÓµÈ´Ù. FontFamily °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ¶Ç´Â Font °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÒ ¶§ FontCollection ¿ÀºêÁ§Æ®ÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇϸé ÀÌ ¸ñ·Ï¿¡ ÀÖ´Â ÆùÆ® Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

InstalledFontCollectionÀº ¼³Ä¡µÈ ÆùÆ®ÀÇ ¸ñ·ÏÀ» °¡Áö´Âµ¥ ÀÌ °´Ã¼·ÎºÎÅÍ ÆùÆ®ÀÇ °³¼ö¿Í °¢ ÆùÆ®ÀÇ ¸ðµç ¼Ó¼ºÀ» Á¶»çÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼³Ä¡µÈ ¸ðµç ÆùÆ®¸¦ ¿­°ÅÇ쵂 ÇØ´ç ÆùÆ®¸¦ Á÷Á¢ ¸¸µé¾î¼­ ŸÀÔÆäÀ̽º À̸§À» Ãâ·ÂÇÑ´Ù.

 

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

     InstalledFontCollection IFC;

     FontFamily *arFM;

     Font *F;

     WCHAR name[LF_FACESIZE];

     int i,n,nf;

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

     PointF P(0,0);

 

     n=IFC.GetFamilyCount();

     arFM=new FontFamily[n];

     IFC.GetFamilies(n,arFM,&nf);

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

          arFM[i].GetFamilyName(name);

          F=new Font(&arFM[i],25,FontStyleRegular,UnitPixel);

          G.DrawString(name,-1,F,P,&S);

          if (P.Y < 700) {

              P.Y+=25;

          } else {

              P.Y=0;

              P.X+=300;

          }

          delete F;

     }

     delete [] arFM;

}

 

GDI¿¡µµ ÀÌ¿Í ¶È°°Àº µ¿ÀÛÀ» ÇÒ ¼ö ÀÖ´Â ÆùÆ® ¿­°Å¶ó´Â ±â´ÉÀÌ Àִµ¥ ±â´ÉÀûÀ¸·Î ´Ù¸¥ Á¡Àº °ÅÀÇ ¾ø´Ù. ´Ù¸¸ GDI´Â Äݹé ÇÔ¼ö¸¦ »ç¿ëÇÏÁö¸¸ GDI+ÀÇ ÆùÆ® ÄÝ·º¼ÇÀº ¹è¿­¿¡ ÇѲ¨¹ø¿¡ ¸ðµç ±Û²ÃÀÇ Á¤º¸¸¦ Á¶»çÇÑ´Ù´Â °Í¸¸ ´Ù¸£´Ù. ¾Õ¿¡¼­µµ ¼³¸íÇÑ ¹Ù ÀÖÁö¸¸ GDI+´Â ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ¾²°í ¼Óµµ¸¦ ³ôÀÌ´Â ¹æ½ÄÀ» ÁÖ·Î »ç¿ëÇÑ´Ù.

PrivateFontCollectionÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á÷Á¢ Á¤ÀÇÇÏ´Â ÆùÆ®ÀÇ ÁýÇÕÀÌ´Ù. ÃÖÃÊ ºñ¾îÀÖ´Â »óÅ·Π»ý¼ºµÇ´Âµ¥ AddFontFile ÇÔ¼ö·Î ¿øÇÏ´Â ÆùÆ®¸¦ Ãß°¡ÇÒ ¼ö ÀÖÀ¸¸ç ¼³Ä¡µÇÁö ¾ÊÀº ÆùÆ®µµ ¸ñ·Ï¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Æ¯Á¤ ÆùÆ® ±×·ì¿¡ ¼ÓÇÑ ±Û²Ã¸¸ »ç¿ëÇÏ°í ½Í´Ù°Å³ª ƯÁ¤ ¹®¼­¿¡ »ç¿ëµÈ ±Û²Ã¸¸ °ü¸®ÇÏ°í ½ÍÀ» ¶§ ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÑ´Ù.

´Ù.¾ÈƼ ¾Ë¸®¾Æ½Ì

GDI+ÀÇ ÅؽºÆ® Ãâ·Â ±â´ÉÀÌ GDI¿¡ ºñÇØ ¿ì¿ùÇÑ Á¡À̶ó¸é ¾ÈƼ ¾Ë¸®¾Æ½Ì(Anti Aliasing)À» µé ¼ö ÀÖ´Ù. ÅؽºÆ®°¡ Ãâ·ÂµÇ´Â ¹è°æ»ö°ú ÅؽºÆ®ÀÇ »ö»óÀÌ Çö°ÝÇÏ°Ô Â÷ÀÌ°¡ ³¯ °æ¿ì ÅؽºÆ®ÀÇ È¹¿¡ °è´Ü Çö»óÀÌ ³ªÅ¸³­´Ù. Çػ󵵰¡ ¾ÆÁÖ ³·Àº ¸ð´ÏÅÍ¿¡¼­ Èò ¹ÙÅÁ¿¡ °ËÁ¤»ö ¹®ÀÚ¿­À» Ãâ·ÂÇØ º¸¸é ÀÌ·± °è´Ü Çö»óÀº ½±°Ô È®ÀÎÇÒ ¼ö ÀÖ´Ù.

¾ÈƼ ¾Ë¸®¾Æ½ÌÀº ÀÌó·³ °æ°è ºÎ±ÙÀÇ »ö»óÂ÷°¡ ½ÉÇÒ ¶§ °æ°è¿¡ Áß°£»öÀ» »ðÀÔÇÔÀ¸·Î½á ÅؽºÆ®ÀÇ Ãâ·Â Ç°ÁúÀ» ³ôÀÌ´Â ±â¼úÀÌ´Ù. ¿¹¸¦ µé¾î Èò»ö°ú °ËÁ¤»ö »çÀÌ¿¡ ȸ»öÀ» Àû´çÈ÷ »ðÀÔÇÏ¸é ¸¶Ä¡ º×À¸·Î ¾´ ±Ûó·³ ¹®ÀÚ¿­ÀÌ ÈξÀ ´õ ºÎµå·´°Ô º¸ÀδÙ. ¹®ÀÚ¿­ Ãâ·Â ¼Ó¼ºÀº Graphics °´Ã¼ÀÇ ¼Ó¼ºÀÌ¸ç ´ÙÀ½ ¸â¹ö ÇÔ¼ö·Î ¼³Á¤ÇÑ´Ù.

 

Status SetTextRenderingHint(TextRenderingHint newMode);

 

¹°·Ð Ãâ·Â ¼Ó¼ºÀÇ ¼³Á¤ »óŸ¦ Á¶»çÇÏ´Â Get ÇÔ¼öµµ ÀÖ´Ù. 5°¡Áö Ãâ·Â Ç°ÁúÀ» ÁöÁ¤ÇÏ´Â ¿­°ÅÇü Áß Çϳª¸¦ ÁöÁ¤ÇÑ´Ù.

 

typedef enum {

    TextRenderingHintSystemDefault = 0,

    TextRenderingHintSingleBitPerPixelGridFit = 1,

    TextRenderingHintSingleBitPerPixel = 2,

    TextRenderingHintAntiAliasGridFit = 3,

    TextRenderingHintAntiAlias = 4,

    TextRenderingHintClearTypeGridFit = 5

} TextRenderingHint;

 

°ªÀÌ ÀÛÀ»¼ö·Ï Ç°ÁúÀº ¶³¾îÁöÁö¸¸ Ãâ·Â ¼Óµµ´Â ºü¸£¸ç °ªÀÌ ³ô¾ÆÁú¼ö·Ï Ç°ÁúÀº ÁÁ¾ÆÁöÁö¸¸ ¼Óµµ´Â ±×¸¸Å­ ´À·ÁÁú °ÍÀÌ´Ù. °¡Àå Ãâ·Â Ç°ÁúÀÌ ÁÁÀº ClearTypeÀº XP¿Í 2003 ÀÌÈÄ¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ³ª¸ÓÁö ¿î¿µÃ¼Á¦¿¡¼­´Â ¹«½ÃµÈ´Ù. ´ÙÀ½ Å×½ºÆ® ÄÚµå´Â Ãâ·Â Ç°ÁúÀ» ¹Ù²ã °¡¸ç ¶È°°Àº ¹®ÀÚ¿­À» ¿©¼¸ ¹ø Ãâ·ÂÇÑ´Ù.

 

Font F(L"±Ã¼­",30,FontStyleRegular,UnitPixel);

PointF P(10.0f,0.0f);

SolidBrush B(Color(0,0,0));

int i;

    

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

     G.SetTextRenderingHint((TextRenderingHint)i);

     G.DrawString(L"Anti Aliasing Test ±ÛÀÚ¸¦ ºÎµå·´°Ô Ãâ·ÂÇÑ´Ù.",-1,&F,P,&B);

     P.Y+=33;

}

Ãâ·Â °á°ú¸¦ ÀÚ¼¼È÷ °üÂûÇØ º¸¸é ȹ°ú °æ°è°¡ ¸¸³ª´Â ºÎºÐÀÇ Ã³¸®°¡ Á¶±Ý¾¿ ´Ù¸£´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. CRT´Â ¿ø·¡ ºûÀÌ ÆìÁö´Â È¿°ú°¡ ÀÖÀ¸¹Ç·Î ¾ÈƼ ¾Ë¸®¾Æ½ÌÀ» ÇÏÁö ¾Ê¾Æµµ º° ¹®Á¦°¡ ¾ø¾úÁö¸¸ ÇöÀç´Â LCD°°Àº °íÇØ»óµµÀÇ ¼±¸íÇÑ Ãâ·Â ÀåÄ¡µéÀÌ °³¹ßµÊÀ¸·Î½á °ú°Å¿¡ ºñÇØ ¹®ÀÚ¿­À» ±ò²ûÇÏ°Ô Ãâ·ÂÇÏ´Â °ÍÀÌ ¾ÆÁÖ Áß¿äÇÑ ¹®Á¦°¡ µÇ¾ú´Ù.

¶ó.MeasureString

ƯÁ¤ ¹®ÀÚ¿­À» Àåºñ¿¡ Ãâ·ÂÇßÀ» ¶§ÀÇ ½ÇÁ¦ Å©±â´Â ´ë´ÜÈ÷ ¸¹Àº ¿ä¼Ò·ÎºÎÅÍ °áÁ¤µÈ´Ù. ÀÏ´Ü ¾î¶² ÆùÆ®¸¦ »ç¿ëÇߴ°¡°¡ °¡Àå Áß¿äÇϸç ÀÌ¿Ü¿¡µµ Á¤·Ä ¹æ½ÄÀ̳ª Ãâ·Â¿¡ »ç¿ëÇÑ Ç÷¡±×µéµµ Ãâ·ÂÆø¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ¹®ÀÚ¿­À» ±¸¼ºÇÏ´Â °³º° ¹®ÀÚÀÇ ±¸¼ºµµ ¹°·Ð Àüü Æø¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ¶ÇÇÑ ±Û²ÃÀÇ Å©±â°¡ ³í¸®ÀûÀÎ ´ÜÀ§ÀÏ ¶§ Ãâ·Â ÀåºñÀÇ Çػ󵵿¡ µû¶ó ½ÇÁ¦ Å©±â°¡ °è»êµÈ´Ù.

»Ó¸¸ ¾Æ´Ï´Ù. ±×¸®±â ¿£ÁøÀÇ ÈùÆà Àû¿ë ¹æ½Ä, ¾ÈƼ ¾Ë¸®¾Æ½Ì¿¡ ÀÇÇØ È®ÀåµÇ´Â ¿µ¿ª, ÆùÆ®ÀÇ ½ºÅ¸ÀÏ¿¡ µû¶ó ´ýÀ¸·Î ´õÇØÁö´Â Å©±â(¿¹¸¦ µé¾î ÀÌÅŸ¯À» Àû¿ëÇÏ¸é ¿·À¸·Î »ì¦ ±â¿î´Ù) µîµî ¿ì¸®°¡ ¾ËÁö ¸øÇÏ´Â ³»ºÎÀûÀÎ ¿ä¼Òµéµµ ¸¹´Ù. ±×·¡¼­ ¹®ÀÚ¿­ÀÇ ½ÇÁ¦ Å©±â¸¦ ¿ì¸®°¡ Á÷Á¢ ±¸Çϱâ´Â »ó´çÈ÷ ¾î·Á¿ì¸ç GraphicsÀÇ ´ÙÀ½ ¸â¹ö ÇÔ¼ö¸¦ ÅëÇØ Á¶»çÇØ¾ß ÇÑ´Ù.

 

Status MeasureString(const WCHAR *string, INT length, const Font *font, const PointF &origin, [const StringFormat *stringFormat,] RectF *boundingBox) const;

Status MeasureString(const WCHAR *string, INT length, const Font *font, const RectF &layoutRect, [const StringFormat *stringFormat,] RectF *boundingBox, [INT *codepointsFitted, INT *linesFilled]) const;

 

¹®ÀÚ¿­ÀÇ ÆøÀ» ±¸Çϱâ À§ÇØ ÇÊ¿äÇÑ ¸ðµç °ªµéÀ» Àü´Þ¹Þ¾Æ¾ß ÇϹǷΠÀμö°¡ Á» ¸¹´Ù. ÀÌÁß [ ] °ýÈ£·Î Ç¥±âµÈ Àμö´Â ÇÊ¿ä¾øÀ» °æ¿ì »ý·« °¡´ÉÇÏ´Ù. Ãâ·Â ¹®ÀÚ¿­, ±æÀÌ, ÆùÆ®, Ãâ·Â ÁÂÇ¥ µîÀ» Àμö·Î Àü´ÞÇϸç Ãâ·Â¿¡ Àû¿ëÇÒ Ç÷¡±×µµ Àü´ÞÇÒ ¼ö ÀÖ´Ù. Ãâ·Â ¿µ¿ªÀº ÁÂÇ¥·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ°í ¿µ¿ªÀ» ÁöÁ¤ÇÒ ¼öµµ Àִµ¥ ¿µ¿ªÀ» ÁöÁ¤ÇÒ °æ¿ì ÀÚµ¿ °³Çà, Á¤·Ä, ÅÇ ¹®ÀÚ±îÁö °è»êÇÏ¿© Ãâ·ÂµÉ ¹®ÀÚ¿­ÀÇ Å©±â¸¦ Á¶»çÇÑ´Ù. °è»êµÈ Æø°ú ³ôÀÌ´Â boundingBox·Î ¸®ÅϵȴÙ.

ÀÌ ÇÔ¼ö¿¡ ´ëÀÀµÇ´Â GDIÀÇ ÇÔ¼ö´Â GetTextExtentPoint32 ÇÔ¼öÀÌ¸ç µÑ ´Ù »ç¿ëÇÏ´Â ¸ñÀûÀº µ¿ÀÏÇÏ´Ù. ¹®ÀÚ¿­ÀÇ ÆøÀ» ¾Ë¾Æ¾ß ¹®ÀÚ¿­ ´ÙÀ½¿¡ Ãâ·ÂÇÒ ÁÂÇ¥¸¦ °è»êÇÒ ¼ö ÀÖÀ¸¹Ç·Î µÎ ÇÔ¼ö´Â ¼­½Ä ÀÖ´Â ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¶§ ²À ÇÊ¿äÇÏ´Ù. ±×·¯³ª ½Ç¸Á½º·´°Ôµµ MeasureString ÇÔ¼öÀÇ µ¿ÀÛÀº »ó´çÈ÷ Á÷°üÀûÀÌÁö ¸øÇÏ¸ç ¹ö±×·Î ÀǽɵǴ ¹®Á¦Á¡±îÁö °¡Áö°í ÀÖ´Ù. ¾î¶² ¹®Á¦Á¡ÀÌ ÀÖ´ÂÁö ¿¹Á¦¸¦ ¸¸µé¾î º¸°í ÇØ°áÃ¥À» ¿¬±¸ÇØ º¸ÀÚ.

 

¿¹ Á¦ : MeasureString

void OnPaint(HDC hdc)

{

     Graphics G(hdc);

 

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

          //´Ù¸¥ ÆùÆ® ¿¬°áÇؼ­ Ãâ·ÂÇϱâ

          REAL x=0;

          const REAL FontSize=32;

          TCHAR *San[]={L"¹éµÎ»ê",L"ÇѶó»ê",L"±Ý°­»ê"};

          RectF bound;

 

          Font F1(L"±¼¸²",FontSize,FontStyleRegular,UnitPoint);

          G.DrawString(San[0],-1,&F1,PointF(x,0),&SolidBrush(Color(0,0,255)));

          G.MeasureString(San[0],-1,&F1,PointF(x,0),&bound);

          x += (int)bound.Width;

 

          Font F2(L"±Ã¼­",FontSize,FontStyleRegular,UnitPoint);

          G.DrawString(San[1],-1,&F2,PointF(x,0),&SolidBrush(Color(255,0,0)));

          G.MeasureString(San[1],-1,&F2,PointF(x,0),&bound);

          x += (int)bound.Width;

 

          Font F3(L"¹ÙÅÁ",FontSize,FontStyleRegular,UnitPoint);

          G.DrawString(San[2],-1,&F3,PointF(x,0),&SolidBrush(Color(0,255,0)));

          G.MeasureString(San[2],-1,&F3,PointF(x,0),&bound);

          x += (int)bound.Width;

     }

     ....

 

»ê À̸§ ¼¼ °³¸¦ ¿¬À̾î Ãâ·ÂÇØ ³õ¾Ò´Âµ¥ °¢°¢ ÆùÆ®¿Í »ö»óÀÌ ´Ù¸£´Ù. ¼­½ÄÀÌ ´Ù¸¥ ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¶§´Â Çѹø¿¡ Ãâ·ÂÇÒ ¼ö ¾øÀ¸¹Ç·Î ¼­½Äº°·Î ³ª´©¾î Ãâ·ÂÇØ¾ß ÇÑ´Ù. ¸ÕÀú ±¼¸² ÆùÆ®·Î ¹éµÎ»êÀ» Ãâ·ÂÇß´Ù. ±×¸®°í ¹Ù·Î À̾ ±Ã¼­ ÆùÆ®·Î ÇѶó»êÀ» Ãâ·ÂÇߴµ¥ ¹éµÎ»ê ¹Ù·Î ´ÙÀ½¿¡ ÇѶó»êÀ» Ãâ·ÂÇÏ·Á¸é ¾Õ¼­ Ãâ·ÂµÈ ¹éµÎ»êÀÇ ÆøÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ±×·¡¼­ ¹éµÎ»ê ¹®ÀÚ¿­ÀÇ ÆøÀ» MeasureStringÀ¸·Î Á¶»çÇßÀ¸¸ç ±× Æø¸¸Å­ xÁÂÇ¥¸¦ ¶ç¿î ÈÄ ÇѶó»êÀ» Ãâ·ÂÇß´Ù.

ÀÌ ÄÚµå´ë·Î¶ó¸é ¹éµÎ»ê°ú ÇѶó»êÀº ¹Ù·Î ÀÎÁ¢ÇÏ°Ô Ãâ·ÂµÇ¾î¾ß Çϳª °á°ú¿¡¼­ º¸´Ù½ÃÇÇ µÎ ¹®ÀÚ¿­ »çÀÌ¿¡ ºÒÇÊ¿äÇÑ ¿©¹éÀÌ »ðÀԵǾî ÀÖ´Ù. ¸¶Âù°¡Áö·Î ÇѶó»ê°ú ±Ý°­»ê »çÀ̵µ ¹ú¾îÁ® Àִµ¥ Á¤È®ÇÏ°Ô °è»êÀ» ÇßÀ½¿¡µµ ºÒ±¸ÇÏ°í ¿ÀÂ÷°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. GDI+ÀÇ MeasureStringÀÌ Å©±â¸¦ À߸ø °è»êÇÏ´ÂÁö GDIÀÇ °æ¿ì¿Í ºñ±³ÇØ º¸ÀÚ.

 

// ¹®ÀÚ¿­ÀÇ Æø Á¡°Ë

TCHAR *Hangul=L"ÇÑ±Û ¹®ÀÚ¿­";

TCHAR szWidth[128];

RectF bound;

 

// GDI+

Font F(L"±¼¸²",20,FontStyleRegular,UnitPixel);

SolidBrush B(Color(0,0,0));

G.DrawString(Hangul,-1,&F,PointF(0,00),&B);

G.MeasureString(Hangul,-1,&F,PointF(0,0),&bound);

wsprintf(szWidth,TEXT("Æø:%d, ³ôÀÌ:%d"),(int)bound.Width,(int)bound.Height);

G.DrawString(szWidth,-1,&F,PointF(200,0),&B);

 

// GDI

HFONT hFont,hOldFont;

hFont=CreateFont(20,0,0,0,0,0,0,0,HANGUL_CHARSET,3,2,1,

     VARIABLE_PITCH | FF_MODERN,TEXT("±¼¸²"));

hOldFont=(HFONT)SelectObject(hdc,hFont);

TextOut(hdc,0,50,Hangul,lstrlen(Hangul));

SIZE sz;

GetTextExtentPoint32(hdc,Hangul,lstrlen(Hangul),&sz);

wsprintf(szWidth,TEXT("Æø:%d, ³ôÀÌ:%d"),sz.cx,sz.cy);

TextOut(hdc,200,50,szWidth,lstrlen(szWidth));

DeleteObject(SelectObject(hdc,hOldFont));

 

20 Çȼ¿ Å©±âÀÇ ±¼¸² ÆùÆ®·Î "ÇÑ±Û ¹®ÀÚ¿­"À̶ó´Â ¶È°°Àº ¹®ÀÚ¿­À» Ãâ·ÂÇ쵂 À§ÂÊÀº GDI+·Î Ãâ·ÂÇÑ °ÍÀÌ°í ¾Æ·¡ÂÊÀº GDI·Î Ãâ·ÂÇÑ °ÍÀÌ´Ù.

GDI+ÀÇ °æ¿ì´Â ÆøÀÌ 116À¸·Î Á¶»çµÇ´Âµ¥ ºñÇØ GDI´Â 107·Î Á¶»çµÇ¾î °á°ú°¡ ¼­·Î ´Ù¸£´Ù. ½ÇÁ¦ Ãâ·ÂµÈ ¸ð¾çÀ» ºÁµµ GDI+´Â ù ¹®ÀÚ¸¦ ÁöÁ¤ÇÑ ÁÂÇ¥¿¡ ³õÁö ¾Ê°í ¾à°£ ¿©¹éÀ» Áشٴ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç ¸¶Âù°¡Áö·Î µÚÂÊÀ¸·Îµµ ¿©¹éÀÌ »ðÀԵǾî ÀüüÀûÀ¸·Î ÆøÀÌ °úÀåµÇ°Ô °è»êµÈ´Ù. GDIÀÇ Æø Á¶»ç ÇÔ¼ö´Â Á¤È®ÇÏ°Ô Á¶»çµÇ´Âµ¥ ºñÇØ GDI+ÀÇ Æø Á¶»ç ÇÔ¼ö´Â Ʋ¸° °á°ú¸¦ º¸°íÇÑ´Ù.

¿Ö ÀÌ·¸°Ô µÇ¾î Àִ°¡¿¡ ´ëÇؼ­´Â °ø½Ä ¹®¼­¿¡ ¸íÄèÇÑ ¼³¸íÀÌ ¾ø´Âµ¥ ±×·¸´Ù°í ¹ö±×¶ó°í È®½ÅÇϱâ´Â ¾Ö¸ÅÇÏ´Ù. GDI+ÀÇ ¹®ÀÚ¿­ Ãâ·Â ¿£ÁøÀº ´Ü¼øÈ÷ ¹®ÀÚ ¸ð¾çÀ» È­¸é¿¡ Ãâ·Â¸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÈùÆÃ, ¾ÈƼ ¾Ë¸®¾Æ½Ì µîÀÇ Ãß°¡ ó¸®¿Í º¹ÀâÇÑ Á¤·Ä±îÁö ¼öÇàÇϹǷΠÀÌ·± °ÍµéÀÌ °í·ÁµÇ¾î °úÀåµÇ°Ô Æò°¡µÇ´Â °ÍÀÌ ¾Æ´Ñ°¡ ÃßÃøµÈ´Ù. ÀÎÅͳݿ¡¼­µµ ÀÌ ¹®Á¦¿¡ ´ëÇØ ¸»ÀÌ ¸¹À¸¸ç ¸î °¡Áö ÇØ°á ¹æ¾ÈÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ¸ðµÎ ²Ç¼öµéÀÏ »ÓÀÌ´Ù.

GDI+ÀÇ °ø½ÄÀûÀÎ ¹®ÀÚ¿­ Å©±â Á¶»ç ÇÔ¼ö´Â ´ÙÀ½ ÇÔ¼öÀÌ´Ù. ¿ö³« ´Ù¾çÇÑ »óȲÀ» °í·ÁÇØ¾ß ÇϹǷΠÃëÇÏ´Â ÀμöµéÀÌ ¾ÆÁÖ ¸¹°í ÀÌ°Í Àú°Í ÁغñÇØ¾ß ÇÒ °ÍÀÌ ¸¹¾Æ ÇÁ·Î±×·¡¹ÖÇÏ´Â ÀýÂ÷µµ ¹«Ã´À̳ª ±î´Ù·Ó´Ù. ÀÏ´Ü ¿øÇüºÎÅÍ º¸ÀÚ.

 

Status MeasureCharacterRanges(const WCHAR *string, INT length, const Font *font, const Rectf &layoutRect, const StringFormat *stringFormat, INT regionCount, Region *regions) const;

 

¾ÕÂÊ ¼¼ Àμö´Â ¼³¸í ¾ÈÇصµ ¾Ë °ÍÀÌ°í layoutRect´Â ÀÌ ¹®ÀÚ¿­ÀÌ Ãâ·ÂµÉ »ç°¢ ¿µ¿ªÀÌ´Ù. ´Ü¼øÈ÷ Å©±â¸¸ Á¶»çÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó »ç°¢ ¿µ¿ª³»ÀÇ ÀÚµ¿ °³Çà±îÁö °í·ÁÇÏ¿© Á¤È®ÇÑ À§Ä¡±îÁö °°ÀÌ °è»êÇÑ´Ù. stringFormat Àμö´Â ¹®ÀÚ¿­ Ãâ·Â ¹æ½ÄÀ» ÁöÁ¤ÇÏ´Â Ç÷¡±×µéÀÌµÇ ÀÌ ¿Ü¿¡µµ ÀÌ °´Ã¼¿¡´Â Á¶»ç ´ë»ó ¹®ÀÚ ¹üÀ§°¡ Æ÷ÇԵǾî ÀÖ´Ù. Áï, ¹®ÀÚ¿­³»ÀÇ ¾î´À ¹üÀ§¿¡ ´ëÇÑ Å©±â¸¦ Á¶»çÇÒ °ÍÀΰ¡¿¡ ´ëÇÑ Áö½Ã »çÇ×ÀÌ stringFormat °´Ã¼·Î Àü´ÞµÈ´Ù. Á¶»ç ¹üÀ§´Â ´ÙÀ½ Ŭ·¡½º·Î Ç¥ÇöÇÑ´Ù.

 

CharacterRange::CharacterRange(INT first, INT length);

 

Á¶»ç ¹üÀ§ÀÇ Ã¹ ¹®ÀÚ À妽º¿Í ±æÀ̸¦ »ý¼ºÀÚ·Î Àü´ÞÇÑ´Ù. ÀÌ·± °´Ã¼ÀÇ ¹è¿­À» ¸¸µç ÈÄ StringFormatÀÇ ´ÙÀ½ ÇÔ¼ö·Î Á¶»ç ¹üÀ§¸¦ ÁöÁ¤ÇÑ´Ù. ¸î °³ÀÇ ¹üÀ§¸¦ Á¶»çÇÒ °ÍÀÎÁö °³¼ö¿Í ¹®ÀÚ ¹üÀ§ÀÇ ¹è¿­À» Àü´ÞÇÏ¸é µÈ´Ù.

 

Status SetMeasurableCharacterRanges(INT rangeCount, const CharacterRange *ranges);

 

ÀÌ ÇÔ¼ö·Î ÁöÁ¤µÈ ¹®ÀÚ ¹üÀ§¿¡ ´ëÇÑ Å©±â°¡ ¸®ÀüÀ¸·Î ¸®ÅϵǴµ¥ MeasureCharacterRanges ÇÔ¼öÀÇ ¸¶Áö¸· µÎ Àμö´Â ¸®ÅÏ°ªÀ» µ¹·Á¹Þ±â À§ÇÑ ¸®ÀüÀÇ ¹è¿­°ú ±× °³¼öÀÌ´Ù. Åë»ó ÀÌ °³¼ö´Â ¹®ÀÚ ¹üÀ§ ¹è¿­ÀÇ °³¼ö¿Í ÀÏÄ¡ÇÑ´Ù. ÇѲ¨¹ø¿¡ ¿©·¯ ¹üÀ§¸¦ Á¶»çÇÒ ¼ö ÀÖ¾î ÁغñÇØ¾ß ÇÒ °ÍÀÌ ¸¹´Ù. ¹«Ã´ È¥¶õ½º·¯¿îµ¥ Äڵ带 º¸¸é Á¤¸®°¡ µÉ °ÍÀÌ´Ù.

 

// ¹®ÀÚÀÇ Á¤È®ÇÑ À§Ä¡ ±¸Çϱâ

TCHAR *korea=L"¾Æ¸§´Ù¿î ±Ý¼ö°­»ê ¿ì¸®³ª¶ó ´ëÇѹα¹";

RectF layout(0,0,200,200);

 

CharacterRange arRange[2]={ CharacterRange(2,4), CharacterRange(12,5) };

StringFormat sf;

sf.SetMeasurableCharacterRanges(2,arRange);

Region *arRgn = new Region[2];

 

Font Gulim(L"±¼¸²",20,FontStyleRegular,UnitPoint);

G.MeasureCharacterRanges(korea,-1,&Gulim,layout,&sf,2,arRgn);

G.FillRegion(&SolidBrush(Color(0,0,255)),&arRgn[0]);

G.FillRegion(&SolidBrush(Color(0,0,255)),&arRgn[1]);

G.DrawRectangle(&Pen(Color(0,0,0)),layout);

G.DrawString(korea,-1,&Gulim,layout,&sf,&SolidBrush(Color(0,0,0)));

delete [] arRgn;

 

Àû´çÈ÷ ±ä ¹®ÀÚ¿­À» 200*200 Å©±â°¡ »ç°¢ ¿µ¿ª¿¡ Ãâ·ÂÇß´Ù. ÀÌ ¹®ÀÚ¿­¿¡¼­ ÀÏÁ¤ÇÑ ¹üÀ§ÀÇ ºÎºÐ ¹®ÀÚ¿­¿¡ ´ëÇØ À§Ä¡¿Í Å©±â¸¦ Á¶»çÇÏ¿© ÆĶõ»ö ¹è°æÀ» Ãâ·ÂÇß´Ù. ½ÇÇà °á°ú¸¦ º¸°í ¾î¶² ½ÄÀ¸·Î °è»êµÈ °ÍÀÎÁö »ìÆì º¸ÀÚ.

µÎ ¹üÀ§ÀÇ ºÎºÐ ¹®ÀÚ¿­¿¡ ´ëÇØ Å©±â¸¦ Á¶»çÇߴµ¥ ù¹ø°´Â 2¹ø°ºÎÅÍ 4±ÛÀÚºÐÀÌ´Ù. 2¹ø° ±ÛÀÚ´Â '´Ù'ÀÚÀÌ°í ¿©±â¼­ºÎÅÍ 4±ÛÀÚºÐÀ̹ǷΠ'´Ù¿î ±Ý'±îÁö°¡ µÈ´Ù. °ø¹éµµ ÇϳªÀÇ ¹®ÀÚÀÓÀ» À¯ÀÇÇÏÀÚ. µÎ¹ø° ¹üÀ§´Â 12¹ø°ºÎÅÍ 5¹®ÀÚºÐÀ̹ǷΠ'³ª¶ó ´ëÇÑ'ÀÌ µÈ´Ù. ÀÌ µÎ ¹üÀ§ÀÇ ¹®ÀÚ°¡ ¾î´À À§Ä¡¿¡ ¾î¶°ÇÑ Å©±â·Î Ãâ·ÂµÇ¾î ÀÖ´ÂÁö Á¶»çÇÏ¿© ±× ¿µ¿ª¿¡ ÆĶõ»öÀ¸·Î Ä¥À» ÇÑ °ÍÀÌ´Ù.

¿äûÇÒ ¹®ÀÚ ¹üÀ§ °´Ã¼ 2°³¸¦ ¹è¿­·Î ±¸¼ºÇÏ¿© SetMeasurableCharacterRanges·Î ¹Ì¸® µî·ÏÇØ ³õ´Â´Ù. ±×¸®°í ¸®ÅÏ°ªÀ» ¹Þ±â À§ÇØ ¸®ÀüÀÇ ¹è¿­À» ÇÒ´çÇÏ°í Ãâ·Â¿¡ »ç¿ëÇÒ ÆùÆ®µµ »ý¼ºÇØ ³õ´Â´Ù. ¿©±â±îÁö ÁغñÇØ ³õ°í MeasureCharacterRanges ÇÔ¼ö¸¦ È£ÃâÇϸé ÁöÁ¤ÇÑ ¿µ¿ª¿¡ ÁöÁ¤ÇÑ ÆùÆ®·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¶§ ¿äûµÈ ¹üÀ§ÀÇ ¹®ÀÚµéÀÌ ¾î´À À§Ä¡¿¡ ÀÖ´ÂÁö ¸®ÀüÀ¸·Î Á¶»çµÇ¾î ¸®Àü ¹è¿­¿¡ ´ëÀԵȴÙ. Äڵ忡¼­´Â ÀÌ ¸®ÀüÀ» ÆĶõ»öÀ¸·Î ä¿ö Á¶»çµÈ ¿µ¿ªÀ» ½Ã°¢ÀûÀ¸·Î Ç¥½ÃÇß´Ù.

¹®ÀÚ¿­ÀÇ À§Ä¡¿Í Å©±â¸¦ Á¶»çÇϴµ¥ ¿Ö »ç°¢¿µ¿ªÀÌ ¾Æ´Ï¶ó ¸®ÀüÀÌ ¸®ÅϵǴ°¡ Çϸé À§ ¿¹¿¡¼­ º¸´Ù½ÃÇÇ ¿äûÇÑ ¹®ÀÚ ¹üÀ§°¡ ¹Ýµå½Ã ÇÑÁÙ¿¡ Æ÷ÇԵȴٴ º¸ÀåÀÌ ¾ø±â ¶§¹®ÀÌ´Ù. "³ª¶ó ´ëÇÑ"À̶ó´Â ¹®ÀÚ ¹üÀ§´Â ÀÚµ¿ °³Çà¿¡ ÀÇÇØ µÎ ÁÙ·Î ³ª´©¾î Ãâ·ÂµÇ¾úÀ¸¸ç µû¶ó¼­ Rect°°Àº »ç°¢¿µ¿ªÀ¸·Î´Â ÀÌ ¹®ÀÚ ¹üÀ§ÀÇ À§Ä¡¸¦ Á¤È®ÇÏ°Ô Ç¥ÇöÇÒ ¼ö ¾ø´Ù. ºÐ¸®µÈ µÎ ¿µ¿ªÀ» Ç¥ÇöÇϱâ À§Çؼ­´Â ¸®ÀüÀÌ ÇÊ¿äÇÏ´Ù.

¿©±â±îÁö ¿¬±¸µÇ¾úÀ¸¸é ÀÌÁ¦ ¼­½ÄÀÖ´Â ¹®ÀÚ¿­À» Ãâ·ÂÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½ ÄÚµå´Â MeasureStringÀ¸·Î ÇØ°áÇÏÁö ¸øÇÑ »êÀ̸§ À̾ Ãâ·ÂÇϱ⸦ Á¤È®ÇÑ °è»ê¿¡ ÀÇÇØ ´Ù½Ã ÀÛ¼ºÇÑ °ÍÀÌ´Ù. MeasureCharacterRanges ÇÔ¼ö¸¦ ¸Å¹ø »ç¿ëÇÏ´Â °ÍÀº ³Ê¹« ¹ø°Å·Ó±â ¶§¹®¿¡ ±â´ÉÀ» °£¼ÒÈ­ÇÑ Àü¿ª MeasureString À¯Æ¿¸®Æ¼ ÇÔ¼ö¸¦ ÀÛ¼ºÇß´Ù.

 

RectF MeasureString(Graphics &G,Font &F,LPCTSTR String,int Count)

{

     RectF layout(0,0,65536,65536);

     CharacterRange cr(0,Count == -1 ? lstrlen(String):Count);

     StringFormat sf;

     sf.SetMeasurableCharacterRanges(1,&cr);

     Region rgn;

     G.MeasureCharacterRanges(String,Count,&F,layout,&sf,1,&rgn);

     RectF rt;

     rgn.GetBounds(&rt,&G);

     return rt;

}

 

// ´Ù¸¥ ÆùÆ® ¿¬°áÇؼ­ Ãâ·ÂÇϱâ

REAL x=0;

const REAL FontSize=32;

TCHAR *San[]={L"¹éµÎ»ê",L"ÇѶó»ê",L"±Ý°­»ê"};

RectF bound;

 

Font F1(L"±¼¸²",FontSize,FontStyleRegular,UnitPoint);

G.DrawString(San[0],-1,&F1,PointF(x,0),&SolidBrush(Color(0,0,255)));

bound=MeasureString(G,F1,San[0],-1);

x += (int)bound.Width;

 

Font F2(L"±Ã¼­",FontSize,FontStyleRegular,UnitPoint);

G.DrawString(San[1],-1,&F2,PointF(x,0),&SolidBrush(Color(255,0,0)));

bound=MeasureString(G,F1,San[1],-1);

x += (int)bound.Width;

 

Font F3(L"¹ÙÅÁ",FontSize,FontStyleRegular,UnitPoint);

G.DrawString(San[2],-1,&F3,PointF(x,0),&SolidBrush(Color(0,255,0)));

bound=MeasureString(G,F1,San[2],-1);

x += (int)bound.Width;

 

Àü¿ª MeasureString ÇÔ¼ö´Â ÀÚµ¿ °³ÇàÀº °í·ÁÄ¡ ¾ÊÀ¸¸ç ¹®ÀÚ¿­ÀÇ ÀÓÀÇ ºÎºÐÀÌ ¾Æ´Ï¶ó ÁöÁ¤ÇÑ ±æÀ̱îÁö¸¸ Á¶»çÇϵµ·Ï °£¼ÒÈ­Çß´Ù. ·¹À̾ƿô ¿µ¿ªÀº 65535À¸·Î ÁÖ¾ú´Âµ¥ ÀÌ´Â ÀÚµ¿ °³ÇàÀÌ ÀϾÁö ¾ÊÀ» Á¤µµ·Î ÃæºÐÈ÷ Å« °ªÀ¸·Î ¼±ÅÃµÈ °ÍÀÌ´Ù. ¿©·¯ ¹üÀ§¸¦ Á¶»çÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î ¹®ÀÚ ¹üÀ§³ª ¸®ÀüÀº ¹è¿­·Î ÇÒ´çÇÏÁö ¾Ê°í ´Ü¼ø º¯¼ö¸¦ »ç¿ëÇß´Ù. ÀÚµ¿ °³ÇàÀ» °í·ÁÄ¡ ¾ÊÀ¸¹Ç·Î ¸®ÀüÀº GetBounds ÇÔ¼ö·Î »ç°¢¿µ¿ªÀ¸·Î º¯È¯ °¡´ÉÇÏ¸ç º¯È¯µÈ »ç°¢¿µ¿ªÀÌ ¸®ÅϵȴÙ.

OnKey4 ÇÔ¼ö´Â ¾Õ¼­ ÀÛ¼ºÇÑ OnKey1 ÇÔ¼ö¿Í °ÅÀÇ µ¿ÀÏÇ쵂 ¹®ÀÚ¿­ÀÇ ÆøÀ» ±¸ÇÒ ¶§ GÀÇ ¸â¹ö ÇÔ¼ö MeasureString ´ë½Å Àü¿ª MeasureString ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù´Â °Í¸¸ ´Ù¸£´Ù. ½ÇÇàÇØ º¸¸é »êÀ̸§ÀÌ ÀÚ½ÅÀÇ Á¤È®ÇÑ Æø¸¸Å­¸¸ Â÷ÁöÇÒ °ÍÀÌ´Ù. ÇØ°á ¹æ¹ýÀÌ ¾ÆÁÖ º¹ÀâÇÑ ÆíÀÌÁö¸¸ ¾î¶°Å³ª ¼­½ÄÀÖ´Â ¹®ÀÚ¿­À» Ãâ·ÂÇϴµ¥´Â ¼º°øÇß´Ù.

GDI+ÀÇ ÅؽºÆ® Ãâ·Â ¿£ÁøÀº ÀÌ ¿Ü¿¡µµ ´Ù¸¥ ¹®Á¦°¡ ÀÖ´Ù. ´ÙÀ½ Äڵ带 ½ÇÇàÇØ º¸ÀÚ. Ãâ·ÂµÈ °á°ú°¡ Áß¿äÇÑ °ÍÀÌ ¾Æ´Ï¶ó Ãâ·ÂµÇ´Â °úÁ¤À» »ìÆì ºÁ¾ß ÇϹǷΠÁö¸éÀ¸·Î ½ÇÇà °á°ú¸¦ º¸ÀÏ ¼ö´Â ¾øÀ¸¸ç Á÷Á¢ ½ÇÇàÇØ ºÁ¾ß ÇÑ´Ù.

 

// ÀÏ°üµÇÁö ¸øÇÑ ¹®ÀÚ°£°Ý Å×½ºÆ®

TCHAR AeKuk[]=

     TEXT("µ¿Çع°°ú ¹éµÎ»êÀÌ ¸¶¸£°í ´âµµ·Ï ÇÏ´À´ÔÀÌ º¸¿ìÇÏ»ç ¿ì¸®³ª¶ó ¸¸¼¼.")

     TEXT("¹«±ÃÈ­ »ïõ¸® È­·Á °­»ê ´ëÇÑ»ç¶÷ ´ëÇÑÀ¸·Î ±æÀÌ º¸ÀüÇϼ¼");

int i;

Font F(L"±¼¸²",10,FontStyleRegular,UnitPoint);

SolidBrush B(Color(0,0,0));

 

for (i=0;i<=lstrlen(AeKuk);i++) {

     G.FillRectangle(&SolidBrush(Color(255,255,255)),0,0,1024,50);

     G.DrawString(AeKuk,i,&F,PointF(0,0),&B);

     GdiFlush();

     Sleep(50);

}

 

Äڵ带 ÀÐ¾î º¸¸é ½±°Ô µ¿ÀÛÀ» À¯ÃßÇÒ ¼ö Àִµ¥ ±ä ¹®ÀÚ¿­À» Á¤ÀÇÇÏ°í 0.05ÃÊ ´ÜÀ§·Î ÇÑ ¹®ÀÚ¾¿ ²¨³» ¼ø¼­´ë·Î Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù. óÀ½¿¡´Â "µ¿"ÀÚ¸¸ ³ª¿À°í ´ÙÀ½¿¡ "µ¿ÇØ", "µ¿Çع°", "µ¿Çع°°ú" ½ÄÀ¸·Î ÇѱÛÀÚ¾¿ µÚ¿¡ µ¡ºÙÀδÙ. ½ÇÇàÇØ º¸¸é ¸Å ±ÛÀÚ°¡ Ãß°¡µÉ ¶§¸¶´Ù ¾ÕÂÊ ±ÛÀÚµéÀÇ °£°ÝÀÌ Æ²·ÁÁö´Â ½É°¢ÇÑ ¹®Á¦°¡ ÀÖ´Ù. ÀÌ ¹®Á¦µµ ¹º°¡ ÀÌÀ¯°¡ ÀÖÀ» °Í °°±â´Â Çѵ¥ ¿Ö ÀÌ·¸°Ô µÇ¾î ÀÖ´ÂÁö Á¤È®È÷ ¾Ë ±æÀÌ ¾ø´Ù.

È®½ÇÇÑ °ÍÀº À̵ý ½ÄÀ¸·Î µ¿ÀÛÇؼ­´Â ÀÏ°üµÈ Ãâ·ÂÀ» ÇÒ ¼ö ¾ø´Ù´Â Á¡ÀÌ´Ù. µÚ¿¡ ¾î¶² ¹®ÀÚµéÀÌ ¿À´Â°¡¿¡ µû¶ó ¾ÕÂÊ ¹®ÀÚ¿­ÀÇ ÀÚ°£ÀÌ ´Þ¶óÁø´Ù´Ï Á¤¸» Ȳ´çÇÏ´Ù. ¿öµå ¿£ÁøÀº Á¤·Ä ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ ¸Å¹ø ¹®ÀÚµéÀÇ ÆøÀ» ±¸ÇÏÁö ¾Ê°í ¹Ì¸® °³º° ¹®ÀÚÀÇ ÆøÀ» ±¸Çسõ°í ij½ÃµÈ ÆøÀ» ´õÇØ Àüü ¹®ÀÚ¿­ÀÇ ÆøÀ» °è»êÇÏ´Â ±â¹ýÀ» ¾´´Ù. ÀÌ ±â¹ýÀº µÚÂÊ¿¡ ¾î¶² ¹®ÀÚ°¡ ¿À´õ¶óµµ ƯÁ¤ ¹®ÀÚÀÇ ÆøÀº ÀÏÁ¤ÇÏ´Ù´Â °¡Á¤À» ÇÏ´Â °ÍÀε¥ GDI+¿¡´Â ÀÌ °¡Á¤ÀÌ Æ²·ÁÁ® ¹ö¸®´Â °ÍÀÌ´Ù.

GDI+´Â Ãâ·Â Ç°ÁúÀ» Áß¿ä½ÃÇϸç ÁÂÇ¥ °è»ê¿¡ Á¤¹Ðµµ°¡ ³ôÀº ½Ç¼ö¸¦ ¾²´Ù º¸´Ï ¿ÀÂ÷°¡ ¹ß»ýÇÒ ¼ö´Â ÀÖ´Ù. ¶Ç ³»°¡ ¸ð¸£´Â ¾î¶² ÇÕ¸®ÀûÀÎ ÀÌÀ¯°¡ ÀÖÀ»Áöµµ ¸ð¸£°Ú´Ù. ±×·¯³ª ¾Æ¹«¸® ³í¸®ÀûÀÎ ÀÌÀ¯¸¦ ´í´Ù ÇÏ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ßÀÚ ÀÔÀå¿¡¼­´Â ÀÌ·± Ư¼ºÀÌ ºÒÆíÇÑ °ÍÀÌ »ç½ÇÀÌ´Ù.

¿©±â¼­´Â ¹®Á¦°¡ ÀÖ´Ù´Â °Í¸¸ È®ÀÎÇÏ°í ÇØ°áÃ¥Àº µû·Î Á¦½ÃÇÏÁö ¾Ê´Â´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¾²±â¿¡ ÀûÇÕÇÏÁö ¾ÊÀº ±â´ÉÀº ¿ìȸ ¹æ¹ýÀ» ã°Å³ª ´ëü ±â¼úÀ» »ç¿ëÇÏ´Â ¼ö¹Û¿¡ ¾ø´Âµ¥ ±× ±â¹ýµéÀÌ ³Ê¹« Ư¼öÇؼ­ ÀϹÝÀûÀÎ °­Á¿¡¼­ ´Ù·ê¸¸ÇÑ ³»¿ëÀº ¾Æ´Ï±â ¶§¹®ÀÌ´Ù.