CreatePen

¿øÇü HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor);
MFC ¿øÇü BOOL CPen::CreatePen( int nPenStyle, int nWidth, COLORREF crColor );
BOOL CPen::CreatePen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );
Àμö

¢ºfnPenStyle:¼±ÀÇ ¸ð¾çÀ» °áÁ¤ÇÑ´Ù. ´ÙÀ½ Áß ÇϳªÀÇ ¸ð¾çÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

½ºÅ¸ÀÏ ¼³¸í
PS_SOLID ½Ç¼±
PS_DASH ±æ°Ô ²÷¾îÁø Á¡¼±. ±½±â 1¸¸ °¡´ÉÇÏ´Ù.
PS_DOT Á¡¼±. ±½±â 1¸¸ °¡´ÉÇÏ´Ù.
PS_DASHDOT ÀÏÁ¡ ¼â¼±. ±½±â 1¸¸ °¡´ÉÇÏ´Ù.
PS_DASHDOTDOT ÀÌÁ¡ ¼â¼±. ±½±â 1¸¸ °¡´ÉÇÏ´Ù.
PS_NULL Åõ¸í ¼±
PS_INSIDEFRAME ½Ç¼±ÀÌµÇ »ç°¢Çü ¾ÈÂÊÀ¸·Î¸¸ ±×·ÁÁø´Ù.

¢ºnWidth:¼±ÀÇ ±½±â¸¦ ³í¸® ´ÜÀ§·Î ÁöÁ¤ÇÑ´Ù. 0À̸é 1Çȼ¿ ±½±â°¡ µÇ´Ù. PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT ½ºÅ¸ÀÏÀÇ Ææ¿¡´Â ±½±â¸¦ 1ÀÌ»óÀ¸·Î ÁöÁ¤Çϸé ÀÌ ÆæÀº PS_SOLID½ºÅ¸ÀÏ·Î º¯°æµÈ´Ù.

¢ºcrColor:¼±ÀÇ »ö»óÀ» ÁöÁ¤Çϸç RGB ¸ÅÅ©·Î ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

¸®ÅÏ ¸¸µé¾îÁø ÆæÀÇ ÇصéÀ» ¸®ÅÏÇÏ¸ç ½ÇÆнà NULLÀ» ¸®ÅÏÇÑ´Ù.
¼³¸í

ÆæÀº GDI°¡ ¼±À» ±×¸± ¶§ »ç¿ëÇÏ´Â ¿ÀºêÁ§Æ®À̸ç DC¿¡ ¼±ÅÃµÈ ÆæÀÇ ¼Ó¼º´ë·Î ¼±ÀÌ ±×¾îÁø´Ù. µðÆúÆ® ÆæÀº ±½±â 1ÀÇ °ËÁ¤»ö ½Ç¼±À̳ª ÆæÀ» ¸¸µé¾î DC·Î Àü¼ÛÇÏ¸é ¸¸µé¾îÁø Ææ´ë·Î ¼±ÀÌ ±×¾îÁø´Ù. ´Ù »ç¿ëÇÏ°í ³­ ÈÄ¿¡´Â DeleteObject ÇÔ¼ö·Î ÆæÀ» »èÁ¦ÇØ¾ß ÇÑ´Ù.

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â °¢°¢ÀÇ ½ºÅ¸ÀÏ·Î 4°³ÀÇ ÆæÀ» ¸¸µé¾î ¼±À» ±ß´Â´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	HPEN MyPen[5], OldPen;
	int i;

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		MyPen[0]=CreatePen(PS_SOLID, 5, RGB(0,0,255));
		MyPen[1]=CreatePen(PS_SOLID, 3, RGB(0,255,0));
		MyPen[2]=CreatePen(PS_DOT, 1, RGB(255,0,0));
		MyPen[3]=CreatePen(PS_DASHDOT, 1, RGB(0,0,0));
		MyPen[4]=CreatePen(PS_DASH, 1, RGB(0,0,0));
		for (i=0;i<5;i++) {
			OldPen=(HPEN)SelectObject(hdc, MyPen[i]);
			MoveToEx(hdc,10,i*20+10,NULL);
			LineTo(hdc,200,i*20+10);
			SelectObject(hdc, OldPen);
			DeleteObject(MyPen[i]);
		}
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

Ãâ·Â °á°ú´Â ´ÙÀ½°ú °°´Ù. ´Ù¾çÇÑ ½ºÅ¸ÀÏ°ú »ö»óÀ¸·Î ¼±ÀÌ ±×·ÁÁø´Ù.

¿¹Á¦ 2

´ÙÀ½ ¿¹Á¦´Â PS_SOLID ½ºÅ¸ÀÏ°ú PS_INSIDEFRAME ½ºÅ¸ÀÏÀÇ Â÷ÀÌÁ¡À» º¸ÀÎ °ÍÀÌ´Ù.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	HPEN hSolidPen, hInsidePen, OldPen;

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		hSolidPen=CreatePen(PS_SOLID, 8, RGB(0,0,255));
		hInsidePen=CreatePen(PS_INSIDEFRAME, 8, RGB(0,0,255));
		OldPen=(HPEN)SelectObject(hdc, hSolidPen);
		Rectangle(hdc,10,10,100,100);

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

		SelectObject(hdc, OldPen);
		DeleteObject(hSolidPen);
		DeleteObject(hInsidePen);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

°¢°¢ ±½±â 8ÀÇ ÆæÀ¸·Î ³ÐÀÌ¿Í ÆøÀÌ 90Çȼ¿ÀÎ »ç°¢ÇüÀ» ±×·È´Ù. hSolidPenÀ¸·Î ±×¸° »ç°¢ÇüÀº 8Çȼ¿ µÎ²²ÀÇ ¼±ÀÌ »ç°¢ÇüÀÇ ¾çÂÊÀ¸·Î È®ÀåµÇ¸ç ±×·ÁÁö¹Ç·Î ±×·ÁÁø »ç°¢ÇüÀÇ ³ÐÀÌ¿Í ÆøÀÌ 94Çȼ¿ÀÌ µÇÁö¸¸ hInsidePenÀ¸·Î ±×¸° »ç°¢ÇüÀº ÆæÀÇ µÎ²²°¡ »ç°¢Çü ¾ÈÂÊÀ¸·Î¸¸ È®ÀåµÇ¾î ±×·ÁÁø »ç°¢ÇüÀÇ ³ôÀÌ¿Í ³ÐÀÌ°¡ 90Çȼ¿ÀÌ µÈ´Ù.

Âü°íÇÔ¼ö CreatePenIndirect:LOGPEN ±¸Á¶Ã¼·Î ¼±Àº ÀÛ¼ºÇÑ´Ù.
Ç÷¿Æû 95ÀÌ»ó
ÂüÁ¶  

written by http://www.winapi.co.kr