ÆæÀº GDI¿¡¼¿Í ¸¶Âù°¡Áö·Î ¼±À» ±×À» ¶§ »ç¿ëÇÏ´Â ±×·¡ÇÈ ¿ÀºêÁ§Æ®À̸ç GDI+¿¡¼´Â Pen °´Ã¼·Î Ç¥ÇöÇÑ´Ù. ¿Ü°û¼±À» ±×¸®´Â Draw* ÇÔ¼öÀÇ Ã¹ ¹ø° Àμö·Î Àü´ÞµÇ¹Ç·Î ¼±À» ±×¸®±â Àü¿¡ Ç×»ó ÆæÀ» ¸ÕÀú ¸¸µé¾î¾ß ÇÑ´Ù. PenÀÇ »ý¼ºÀÚ´Â ´ÙÀ½ µÎ °¡Áö°¡ ÀÖ´Ù.
Pen(const Color &color, REAL width);
Pen(const Brush *brush, REAL width);
ù ¹ø° »ý¼ºÀÚ´Â ÆæÀÇ »ö»ó°ú µÎ²²¸¦ ÁöÁ¤Çϴµ¥ µÎ²²¸¦ »ý·«Çϸé 1ÀÌ Àû¿ëµÈ´Ù. °¡Àå ÀϹÝÀûÀÎ ÆæÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.
¿¹ Á¦ : GdiPlusPen |
GdiPlusPen ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í Ææ ¿ÀºêÁ§Æ®ÀÇ ¿©·¯°¡Áö ¼Ó¼ºÀ» Å×½ºÆ®ÇØ º¸ÀÚ. ´ÙÀ½ ÄÚµå´Â ±½±â 3ÀÇ »¡°£»ö ÆæÀ» ¸¸µé¾î ¼öÆò¼±À» ±×¸°´Ù.
Pen P(Color(255,0,0),3);
G.DrawLine(&P,10,10,200,10);
µÎ ¹ø° »ý¼ºÀÚ´Â ºê·¯½Ã·ÎºÎÅÍ ÆæÀ» »ý¼ºÇÑ´Ù. ÆæÀÇ µÎ²²°¡ ±½¾îÁö¸é ¼±¿¡µµ ¸éÀÌ »ý±â´Âµ¥ ÀÌ ¸éÀ» ä¿öÁÙ ºê·¯½Ã¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. ´ÙÀ½ ÄÚµå´Â ÇØÄ¡ ºê·¯½Ã·ÎºÎÅÍ ±½Àº ÆæÀ» ¸¸µé¾î Ÿ¿øÀ» ±×¸°´Ù.
HatchBrush H(HatchStyleWeave,Color(255,0,0),Color(0,255,0));
Pen P(&H,20);
G.DrawEllipse(&P,20,20,300,200);
Àμö·Î Àü´ÞµÇ´Â ºê·¯½Ã¸¸ ¹Ù²Ù¸é Ææ¿¡ ÀÇÇØ ±×·ÁÁö´Â µÎ²¨¿î ¼±ÀÇ Ã¤»ö ¸ð¾çÀ» ´Ù¾çÇÏ°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Pen Ŭ·¡½ºÀÇ »ý¼ºÀÚ´Â »ö»ó°ú ±½±â¸¸À» ÁöÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ÀÌ ¿Ü¿¡µµ ÆæÀº ¾ÆÁÖ ´Ù¾çÇÑ ¼Ó¼ºÀ» °¡Áú ¼ö ÀÖÀ¸¸ç Pen Ŭ·¡½º¿¡´Â ¼Ó¼ºÀ» Á¶»çÇϰųª º¯°æÇÏ´Â ¸â¹ö ÇÔ¼öµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ½ÇÇàÁß¿¡ ÆæÀÇ »ö»ó°ú ºê·¯½Ã, ÆæÀÇ µÎ²² µîÀ» º¯°æÇÑ´Ù.
Status SetColor(const Color &color);
Status SetBrush(const Brush *brush);
Status SetWidth(REAL width);
¹°·Ð ¹Ý´ë ÇÔ¼öÀÎ Get~µµ Á¤ÀǵǾî ÀÖ¾î¼ ÆæÀÇ ¼Ó¼ºÀ» Á¶»çÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ÄÚµå´Â °ËÁ¤»öÀ¸·ÎºÎÅÍ Ãâ¹ßÇÏ¿© Á¡Á¡ ÆĶõ»öÀ¸·Î ÆæÀÇ »ö»óÀ» º¯°æÇØ °¡¸é¼ ¼öÆò¼±À» ¿¬¼ÓÀûÀ¸·Î Ãâ·ÂÇÑ´Ù.
int i;
Pen P(Color(0,0,0));
for (i=0;i<256;i++) {
P.SetColor(Color(0,0,255-i));
G.DrawLine(&P,0,i,300,i);
}
¼³Ä¡ È¸é µî¿¡¼ ÈçÈ÷ º¼ ¼ö ÀÖ´Â ±×¶óµ¥ÀÌ¼Ç ¸ð¾çÀÌ´Ù. GDI+¿¡´Â ÀÌ·± ¸ð¾çÀÇ ºê·¯½Ã¸¦ ¸¸µé ¼öµµ ÀÖÀ¸¹Ç·Î ÀÏÀÏÀÌ ÆæÀ» ¹Ù²ã °¡¸ç ±×¶óµ¥À̼ÇÀ» ±×¸± ÇÊ¿ä´Â ¾ø´Ù.
ÆæÀº óÀ½ »ý¼ºµÉ ¶§ ½Ç¼±À¸·Î »ý¼ºµÇÁö¸¸ ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¼±ÀÇ ¸ð¾çÀ» Á¡¼±À̳ª ÀÏÁ¡ ¼â¼± µîÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.
Status SetDashStyle(DashStyle dashStyle);
ÁöÁ¤ °¡´ÉÇÑ ¼±ÀÇ ¸ð¾çÀº ´ÙÀ½°ú °°Àº ¿°ÅÇüÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù.
typedef enum {
DashStyleSolid = 0,
DashStyleDash = 1,
DashStyleDot = 2,
DashStyleDashDot = 3,
DashStyleDashDotDot = 4,
DashStyleCustom = 5
} DashStyle;
¼±À» ±¸¼ºÇÏ´Â ²÷¾îÁø ÀÛÀº ¼±ºÐµéÀ» ´ë½¬¶ó°í Çϴµ¥ ´ë½¬°£ÀÇ °£°ÝÀº ¼±ÀÇ µÎ²²¿Í °°´Ù. ¾ãÀº Ææ¿¡¼´Â ´ë½¬µµ ÃÎÃÎÇÏÁö¸¸ ÆæÀÌ ±½À¸¸é ´ë½¬°£ÀÇ °£°Ýµµ ±×¸¸Å ³Ð¾îÁø´Ù. ´ÙÀ½ ÄÚµå´Â GDI+°¡ ±âº»ÀûÀ¸·Î Áö¿øÇÏ´Â Ææ ½ºÅ¸ÀÏÀ» ¸ðµÎ Ãâ·ÂÇØ º» °ÍÀÌ´Ù.
Pen P(Color(0,0,0),5);
int i;
for (i=0;i<5;i++) {
P.SetDashStyle((DashStyle)i);
G.DrawLine(&P,10,i*20+20,300,i*20+20);
}
¿ÞÂÊÀº ¼±ÀÇ µÎ²²°¡ 5ÀÏ ¶§ÀÇ Ãâ·Â °á°úÀÌ°í ¿À¸¥ÂÊÀº ¼±ÀÇ µÎ²²¸¦ 2·Î Á¶Á¤ÇßÀ» ¶§ÀÇ °á°úÀÌ´Ù.
´ë½¬ÀÇ °£°ÝÀÌ ¼±ÀÇ µÎ²²¿¡ ¿µÇâÀ» ¹Þ´Â´Ù´Â °ÍÀ» ¾Ë ¼ö Àִµ¥ ÀÌ´Â ¹«Ã´ ÇÕ¸®ÀûÀÌ´Ù. GDIµµ ÆæÀÇ ¸ð¾çÀ» º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ µÎ²²°¡ 1ÀÏ ¶§¸¸ ¼±ÀÇ ¸ð¾çÀÌ À¯ÁöµÇ´Âµ¥ ºñÇØ GDI+´Â ÆæÀÌ ±½¾îµµ ½ºÅ¸ÀÏÀÌ Àû¿ëµÈ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. GDI+°¡ ¹Ì¸® Á¤ÀÇÇØ ³õÀº ´ë½¬ ¸ð¾çÀº ´Ù¼¸ °³¿¡ ºÒ°úÇÏÁö¸¸ ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ¿øÇÏ´Â ¾î¶² ½ºÅ¸ÀÏÀÇ Ææµµ ¸¸µé ¼ö ÀÖ´Ù.
Status SetDashPattern(const REAL *dashArray, INT count);
½Ç¼öÇü ¹è¿¿¡ Á¡¼± ±æÀÌ¿Í °ø¹é ±æÀ̸¦ ÀÛ¼ºÇÏ¿© ±× Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ°í count¿¡ ¹è¿ Å©±â¸¦ ¾Ë·Á ÁÖ¸é ¹è¿¿¡ ÀúÀåµÈ ±æÀÌ´ë·Î ´ë½¬¸¦ ¸¸µç´Ù. ´ÙÀ½ ÄÚµå´Â ¾ÆÁÖ ºÒ±ÔÄ¢ÇÑ ¸ð¾çÀÇ ´ë½¬¸¦ »ý¼ºÇÑ´Ù.
Pen P(Color(0,0,0),5);
REAL arDash[]={3.0f,1.0f,8.0f,2.0f,5.0f,1.0f};
P.SetDashStyle(DashStyleCustom);
P.SetDashPattern(arDash,sizeof(arDash)/sizeof(arDash[0]));
G.DrawLine(&P,10,50,300,50);
óÀ½ 3´ÜÀ§¸¸Å ´ë½¬¸¦ ¸¸µé°í ´ÙÀ½ 1´ÜÀ§´Â °ø¹é, ´ÙÀ½ 8´ÜÀ§´Â ´ë½¬, ´ÙÀ½ 2´ÜÀ§´Â °ø¹é µîÀ¸·Î ´ë½¬ ¸ð¾çÀ» ÁöÁ¤Çß´Ù. ¹è¿ÀÇ Â¦¼ö¹ø° ¼ö´Â ´ë½¬ÀÇ ±æÀÌÀÌ°í Ȧ¼ö¹ø° ¼ö´Â °ø¹éÀÇ ±æÀÌÀÌ´Ù. À̶§ °¢ ´ÜÀ§´Â Ææ ±½±âÀÇ ¹è¼öÀÌ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
´ë½¬¿Í °ø¹éÀÇ ±æÀ̸¦ ¸¶À½´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¾î¶² ½ºÅ¸ÀÏÀÇ ÆæÀ̵çÁö ¸¸µé ¼ö ÀÖ´Â ¼ÀÀÌ´Ù. µ¥½¬´Â ¼±ÀÇ ½ÃÀÛ ÁÂÇ¥¿¡¼ºÎÅÍ ¹«´Ì°¡ ³ªÅ¸³ª¸ç ´ë½¬ ±æÀ̺¸´Ù ´õ ±ä ¼±À» ±×À¸¸é ¹«´Ì°¡ ¹Ýº¹µÈ´Ù. ´ë½¬ÀÇ ½ÃÀÛÀÌ ¼±ÀÇ ½ÃÀÛºÎÅÍÀε¥ ´ÙÀ½ ÇÔ¼ö·Î ¿ÀÇÁ¼ÂÀ» º¯°æÇÏ¸é ´ë½¬ÀÇ ½ÃÀÛ À§Ä¡¸¦ Á¶Á¤ÇÒ ¼ö ÀÖ´Ù.
Status SetDashOffset(REAL dashOffset);
ÁöÁ¤ÇÑ ¿ÀÇÁ¼Â¸¸Å °Ç³Ê¶Ú ÀÚ¸®¿¡¼ ´ë½¬°¡ ½ÃÀ۵ȴÙ. ´ë°³ÀÇ °æ¿ì´Â ´ë½¬°¡ ¾îµð¼ºÎÅÍ ½ÃÀ۵Ǵ°¡°¡ Áß¿äÇÏÁö ¾ÊÁö¸¸ ¼±ÀÇ ¸ð¾çÀÌ ¾ÆÁÖ µ¶Æ¯ÇÏ´Ù¸é ÁÖº¯ÀÇ Ãâ·Â ¸ð¾ç°ú Á¶È¸¦ ÀÌ·ç±â À§ÇØ ´ë½¬ÀÇ ½ÃÀÛ À§Ä¡°¡ Áß¿äÇÒ ¼öµµ ÀÖ´Ù. ÀÏÁ¡ ¼â¼±ÀÇ °æ¿ì ±äÁÙ, ªÀºÁÙÀÌ ¹Ýº¹µÇ´Âµ¥ ¿ÀÇÁ¼ÂÀ» º¯°æÇϸé ªÀºÁÙºÎÅÍ ½ÃÀÛÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ´ë½¬ÀÇ ¿ÀÇÁ¼ÂÀ» ÁÖ±âÀûÀ¸·Î º¯È½ÃÅ´À¸·Î½á ¼±Åà ¿µ¿ªÀ» ¾Ö´Ï¸ÞÀ̼ÇÇÏ´Â È¿°ú¸¦ ³½´Ù.
¿¹ Á¦ : DashAnimation |
REAL Offset = 0;
void OnPaint(HDC hdc)
{
Graphics G(hdc);
Pen P(Color(0,0,0),2);
P.SetDashStyle(DashStyleDash);
P.SetDashOffset(Offset);
G.DrawRectangle(&P,10,10,200,150);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch(iMessage) {
case WM_CREATE:
hWndMain=hWnd;
SetTimer(hWnd,1,200,NULL);
return 0;
case WM_TIMER:
Offset--;
if (Offset < 0) Offset = 3;
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
OnPaint(hdc);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
OnPaint¿¡¼ Á¡¼±À¸·Î »ç°¢ÇüÀ» ±×¸®µÇ ´ë½¬ÀÇ ½ÃÀÛ À§Ä¡¸¦ Àü¿ª º¯¼ö OffsetÀ¸·Î ÁöÁ¤Çß´Ù. WndProc¿¡¼ 0.2ÃÊ °£°ÝÀÇ Å¸À̸Ӹ¦ ¼³Ä¡ÇÏ°í OffsetÀ» 0~3 »çÀÌ·Î ÁÖ±âÀûÀ¸·Î º¯È½ÃÅ´À¸·Î½á ¶È°°Àº »ç°¢ÇüÀÌ¶óµµ ¸ð¾çÀÌ ´Þ¶óÁø´Ù. ÃÊ´ç ´Ù¼¸ ¹ø¾¿ ´ë½¬°¡ ½Ã°è ¹æÇâÀ¸·Î ȸÀüÇÏ´Â °Íó·³ º¸ÀδÙ. Æ÷Åä¼¥°°Àº ±×·¡ÇÈ ÇÁ·Î±×·¥¿¡¼ ÀÌ·± ²Ù¹°´ë´Â µµÇüÀ¸·Î ¼±Åà ¿µ¿ªÀ» Ç¥½ÃÇÑ´Ù.
´ë½¬ÀÇ ¿ÀÇÁ¼ÂÀ» º¯°æÇÏ´Â ±â´ÉÀÌ ¾ø´Ù¸é °¢ ¼±ºÐÀ» ÀÏÀÏÀÌ ±×·Á¾ß ÇϹǷΠÀÌ¿Í °°Àº È¿°ú¸¦ ±¸ÇöÇϱⰡ »ó´çÈ÷ ¾î·Æ´Ù. ÀÌ ¿¹Á¦´Â ´Ü¼øÇÑ »ç°¢ÇüÀ» ±×·Á º°·Î ¸ÚÀÌ ¾øÁö¸¸ Æнº¸¦ »ç¿ëÇÏ¸é ±ÛÀÚ³ª ÀÓÀÇÀÇ °î¼± ¿µ¿ª¿¡ ´ëÇؼµµ ¾Ö´Ï¸ÞÀ̼ÇÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
¼±ÀÇ ³¡¸ð¾çÀº º°´Ù¸¥ ÁöÁ¤ÀÌ ¾øÀ¸¸é ¹Ô¹ÔÇÑ »ç°¢ÇüÀÌ´Ù. ±×·¯³ª ´ÙÀ½ ÇÔ¼öµéÀ» »ç¿ëÇÏ¸é ³¡ ¸ð¾ç¿¡ ¾à°£ÀÇ Àå½ÄÀ» ´Þ ¼ö ÀÖ´Ù.
Status SetStartCap(LineCap startCap);
Status SetEndCap(LineCap endCap);
Status SetDashCap(DashCap dashCap);
Status SetLineCap(LineCap startCap, LineCap endCap, DashCap dashCap);
¼±ÀÇ ³¡ ¸ð¾çÀº ´ÙÀ½ ¿°ÅÇü Áß Çϳª·Î ÁöÁ¤ÇÑ´Ù.
typedef enum {
LineCapFlat = 0,
LineCapSquare = 1,
LineCapRound = 2,
LineCapTriangle = 3,
LineCapNoAnchor = 0x10,
LineCapSquareAnchor = 0x11,
LineCapRoundAnchor = 0x12,
LineCapDiamondAnchor = 0x13,
LineCapArrowAnchor = 0x14,
LineCapCustom = 0xff
} LineCap;
SetStartCap, SetEndCap ÇÔ¼ö´Â ¼±ÀÇ ¾çÂÊ ³¡ Àå½ÄÀ» ÁöÁ¤Çϴµ¥ LineCap ¿°ÅÇü Áß Çϳª¸¦ ÁöÁ¤ÇÑ´Ù. °£´ÜÇÑ Å×½ºÆ® Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ.
Pen P(Color(0,0,0),10);
P.SetStartCap(LineCapArrowAnchor);
P.SetEndCap(LineCapDiamondAnchor);
G.DrawLine(&P,30,30,300,30);
P.SetStartCap(LineCapRound);
P.SetEndCap(LineCapTriangle);
G.DrawLine(&P,30,60,300,60);
P.SetStartCap(LineCapSquareAnchor );
P.SetEndCap(LineCapRoundAnchor );
G.DrawLine(&P,30,90,300,90);
¼¼ °³ÀÇ ¼öÆò¼±À» ±×¸®µÇ °¢ ¼±ÀÇ ³¡ ¸ð¾çÀ» ¸ðµÎ ´Ù¸£°Ô ÁöÁ¤ÇØ º¸¾Ò´Ù.
¼± ³¡¿¡ È»ìÇ¥¸¦ ´Þ°Å³ª µÕ±Ù Àå½Ä, ³×¸ð Àå½Ä µîÀ» ºÙÀÏ ¼ö ÀÖ´Ù. °¢ Àå½ÄÀÇ Å©±âµµ ¼±ÀÇ ±½±â¿¡ ºñ·ÊÇؼ Ä¿Áø´Ù. SetDashCap ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ´ë½¬ÀÇ ¸ð¾çµµ ´ÙÀ½ Áß Çϳª·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
typedef enum {
DashCapFlat = 0,
DashCapRound = 2,
DashCapTriangle = 3
} DashCap;
½Ç¼±ÀÌ ¾Æ´Ò °æ¿ì ²÷¾îÁø °¢°¢ÀÇ ´ë½¬ ¾çÂÊÀº ÀÌ ¿°ÅÇüÀÌ ÁöÁ¤ÇÏ´Â ¸ð¾çÀ¸·Î ¹Ù²ï´Ù. °£´ÜÇÑ Å×½ºÆ® Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ.
Pen P(Color(0,0,0),10);
P.SetDashStyle(DashStyleDashDot);
P.SetDashCap(DashCapFlat);
G.DrawLine(&P,10,20,300,20);
P.SetDashCap(DashCapRound);
G.DrawLine(&P,10,40,300,40);
P.SetDashCap(DashCapTriangle);
G.DrawLine(&P,10,60,300,60);
´ë½¬ÀÇ ³¡ ºÎºÐÀÌ µÕ±Û°Ô ¶Ç´Â »ï°¢Çü ¸ð¾çÀ¸·Î ³ªÅ¸³´Ù. ´ë½¬ ½ºÅ¸ÀÏÀº ¼± ±½±â°¡ 1ÀÏ ¶§´Â ¾Æ¹« È¿°úµµ ¾øÀ» °ÍÀÌ´Ù. SetLineCap ÇÔ¼ö´Â ½ÃÀÛ, ³¡, ´ë½¬ÀÇ ¸ð¾çÀ» ÇѲ¨¹ø¿¡ ÁöÁ¤ÇÑ´Ù. ȸ鿡¼´Â ´ë½¬ ¸ð¾çÀÌ ¹«Ã´ °ÅÄ¥°Ô Ç¥ÇöµÇÁö¸¸ ÇÁ¸°ÅÍ°°Àº °íÇØ»óµµ Àåºñ¿¡¼´Â ÈξÀ ´õ ¼¶¼¼ÇÑ ¸ð¾çÀ¸·Î ±×·ÁÁú °ÍÀÌ´Ù.
Á¶ÀÎ ¸ð¾çÀº µÎ ¼±ºÐÀÌ ¸¸³ª ²©¾îÁö´Â ºÎºÐÀÇ ¸ð¾çÀ» ÁöÁ¤ÇÑ´Ù. º°´Ù¸¥ ÁöÁ¤ÀÌ ¾øÀ¸¸é µÎ ¼±ºÐÀÌ Á÷±³ÇÏ´Â ¸ð¾çÀ» ±×¸®Áö¸¸ ´ÙÀ½ ÇÔ¼ö·Î Á¶ÀÎ ¸ð¾çÀ» ¹Ù²Ù¸é ´Ù¸¥ ¸ð¾çÀ¸·Î ±×¸± ¼öµµ ÀÖ´Ù.
Status SetLineJoin(LineJoin lineJoin);
Å×½ºÆ® Äڵ带 ÀÛ¼ºÇÏ¿© °á°ú¸¦ º¸µµ·Ï ÇÏÀÚ. ¸»·Î ½ºÅ¸ÀÏÀ» ¼³¸íÇÏ´Â °Íº¸´Ù´Â ½ºÅ¸ÀÏ¿¡ µû¶ó ±×·ÁÁö´Â ¸ð¾çÀ» Á÷Á¢ ´«À¸·Î º¸´Â °ÍÀÌ ´õ ½±´Ù.
Pen P(Color(0,0,0),15);
P.SetLineJoin(LineJoinMiter);
G.DrawRectangle(&P,10,10,60,60);
P.SetLineJoin(LineJoinBevel);
G.DrawRectangle(&P,110,10,60,60);
P.SetLineJoin(LineJoinRound);
G.DrawRectangle(&P,10,110,60,60);
P.SetLineJoin(LineJoinMiterClipped);
G.DrawRectangle(&P,110,110,60,60);
Á÷»ç°¢Çüó·³ µÎ ¼±ºÐÀÌ ¸¸³ª´Â ¸ð³ ºÎºÐÀÇ Àå½ÄÀÌ µÕ±×½º·³ÇØÁö±âµµ ÇÏ°í ±ïÀÎ ¸ð¾çÀÌ µÇ±âµµ ÇÑ´Ù. ´ÙÀ½ ÇÔ¼ö´Â ¼±ÀÇ Á¤·Ä ¹æ½ÄÀ» º¯°æÇÑ´Ù.
Status SetAlignment(PenAlignment penAlignment);
Á¤·Ä ¹æ½ÄÀ̶õ ÁöÁ¤ÇÑ ÁÂÇ¥¿¡ ´ëÇØ ÆæÀÇ µÎ²²°¡ ¾î´ÀÂÊÀ¸·Î È®ÀåµÉ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. Áß¾Ó°ú ¾ÈÂÊÀ¸·Î Á¤·ÄÇÒ ¼ö Àִµ¥ µðÆúÆ®´Â Áß¾ÓÀÌ´Ù. ±×·¡¼ ÆæÀÌ ±½À» °æ¿ì ÁöÁ¤ÇÑ ÁÂÇ¥º¸´Ù ´õ ¹Ù±ù¿¡ ¼±ÀÌ ±×·ÁÁú ¼öµµ ÀÖ´Ù. Á¤·Ä ¹æ½ÄÀ» ¾ÈÂÊÀ¸·Î º¯°æÇÏ¸é µµÇüÀÇ ¾ÈÂÊÀ¸·Î¸¸ ¼±ÀÇ µÎ²²°¡ È®ÀåµÇ¾î °æ°è¹ÛÀ» ¹þ¾î³ªÁö ¾Ê´Â´Ù.
Pen P(Color(192,192,192),15);
Pen P2(Color(0,0,0),1);
// Á߽ɿ¡ Á¤·Ä
P.SetAlignment(PenAlignmentCenter);
G.DrawRectangle(&P,10,10,100,100);
G.DrawLine(&P,10,150,300,150);
// ¾ÈÂÊÀ¸·Î Á¤·Ä
P.SetAlignment(PenAlignmentInset);
G.DrawRectangle(&P,200,10,100,100);
G.DrawLine(&P,10,200,300,200);
// È®ÀÎÀ» À§ÇÑ ¾È³»¼±
G.DrawRectangle(&P2,10,10,100,100);
G.DrawRectangle(&P2,200,10,100,100);
G.DrawLine(&P2,10,150,300,150);
G.DrawLine(&P2,10,200,300,200);
ÆæÀÌ ¾ÆÁÖ ±½À» °æ¿ì´Â ÀÌ Á¤·Ä ¹æ½Ä¿¡ µû¶ó ±×·ÁÁö´Â µµÇüÀÇ ¸ð¾çÀÌ »ó´çÈ÷ ´Þ¶óÁø´Ù. Á¤·Ä ¹æ½ÄÀº ´ÝÈù µµÇüÀ» ±×¸± ¶§¸¸ Àû¿ëµÇ¸ç Á÷¼±À̳ª ¿øȣó·³ ³»ºÎ/¿ÜºÎÀÇ ±¸ºÐÀÌ ¾ø´Â µµÇü¿¡ ´ëÇؼ´Â Ç×»ó Áß¾ÓÀ¸·Î Á¤·ÄµÈ´Ù. ¾ÈÂÊ Á¤·Ä ¹æ½ÄÀº GDIÀÇ PS_INSIDEFRAME°ú °³³äÀûÀ¸·Î µ¿ÀÏÇÏ´Ù.