๋ฐ˜์‘ํ˜•

์ , ์„ , ์‚ฌ๊ฐํ˜•, ์›ํ˜•, ๋‹ค๊ฐํ˜• ๋“ฑ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ '์ž‘๋„ํ•จ์ˆ˜'๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์„ , ์‚ฌ๊ฐํ˜•, ์›ํ˜•, ์ƒ‰์ƒ์„ ์ž…ํ˜€ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

โ€ป ๊ตฌ์ฒด์ ์ธ ํ•จ์ˆ˜์˜ ์ •์˜์™€ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด MSDN์„ ์ฝ์–ด ๋ณด์‹œ๊ธธ ๊ถŒํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.


์„  ๊ทธ๋ฆฌ๊ธฐ

์„ ์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋Š” ๋‘ ์ ์ž…๋‹ˆ๋‹ค. ๋‘ ์ ์ด ์ด์–ด์ ธ ํ•˜๋‚˜์˜ ์ง์„ ์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . 

์œˆ๋„์šฐ์—์„œ๋Š” ํ˜„์žฌ์˜ ์ขŒํ‘œ๋ถ€ํ„ฐ ๋ชฉ์ ์ง€์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ง์„ ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

//ํ˜„์žฌ์˜ ์œ„์น˜๋ฅผ ์ด๋™์‹œํ‚ค๊ธฐ.
CPoint MoveTo(int x, int y);

//ํ˜„์žฌ์œ„์น˜์—์„œ ํŠน์ •์œ„์น˜ ๊นŒ์ง€ ์„ ์„ ๊ธ‹๊ธฐ.
BOOL LineTo(int x, int y);

์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Picture control ์œผ๋กœ๋ถ€ํ„ฐ DC ์–ป๊ธฐ.
CClientDC dc(GetDlgItem(IDC_PC_VIEW));

// ํ˜„์žฌ ์œ„์น˜๋ฅผ (100, 100)์œผ๋กœ ์ด๋™ํ•˜๊ธฐ.
dc.MoveTo(100, 100);

// ์ง์„ ์„ ํ˜„์žฌ ์œ„์น˜์ธ (100, 100) ๋ถ€ํ„ฐ (200, 200) ๊นŒ์ง€ ๊ทธ๋ฆฌ๊ธฐ.
dc.LineTo(200, 200);


์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ

์‚ฌ๊ฐํ˜•์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋Š” 4๊ฐœ์˜ ์ ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜์—๋Š” ๊ตณ์ด 4๊ฐœ์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ขŒ์ƒ๋‹จ, ์šฐํ•˜๋‹จ์˜ ์ขŒํ‘œ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ œ๊ณต๋˜๋Š” ํ•จ์ˆ˜๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

//a) ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
BOOL Rectangle(int x1, int y1, int x2, int y2);
//b) ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
//c) CBrush๋ฅผ ์ด์šฉํ•ด ๋ฉด์ด ๋ธŒ๋Ÿฌ์‹œ๋กœ ์น ํ•ด์ง„ ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
void FillRect(LPCRECT lpRect, CBrush* pBrush);
//d) ๋‹จ์ƒ‰์œผ๋กœ ์ฑ„์›Œ์ง„ ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);

์•„๋ž˜ ์™ธ์—๋„ ์ œ๊ณต๋˜๋Š”๊ฒŒ ๋” ์žˆ์ง€๋งŒ ๊ฐ„๋‹จํžˆ ์•„๋ž˜ ํ•จ์ˆ˜๋งŒ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Picture control ์œผ๋กœ๋ถ€ํ„ฐ DC ์–ป๊ธฐ.
CClientDC dc(GetDlgItem(IDC_PC_VIEW));

// (100,100) ๋ถ€ํ„ฐ (200,200) ๊นŒ์ง€์˜ ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
dc.Rectangle(100, 100, 200, 200);

// (100,100) ๋ถ€ํ„ฐ (200,200) ๊นŒ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ณ , ํƒ€์›์˜ ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ€ 10์ธ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
dc.RoundRect(100, 100, 200, 200, 10, 10);

// (100,100) ๋ถ€ํ„ฐ (200,200) ๊นŒ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ณ , Red ์ƒ‰์ƒ์œผ๋กœ ์ฑ„์›Œ์ง„ ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ.
dc.FillSolidRect(100, 100, 100, 100, RGB(255, 0, 0));


์›ํ˜• ๊ทธ๋ฆฌ๊ธฐ

์›์„ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋Š” ์ง์‚ฌ๊ฐํ˜•๊ณผ ๋™์ผํ•˜๊ฒŒ ์ขŒ์ƒ๋‹จ, ์šฐํ•˜๋‹จ ์ขŒํ‘œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

BOOL Ellipse(int x1, int y1, int x2, int y2);

์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Picture control ์œผ๋กœ๋ถ€ํ„ฐ DC ์–ป๊ธฐ.
CClientDC dc(GetDlgItem(IDC_PC_VIEW));

// (100,100) ๋ถ€ํ„ฐ (200,200) ๊นŒ์ง€์˜ ์›ํ˜• ๊ทธ๋ฆฌ๊ธฐ.
dc.Ellipse(100, 100, 200, 200);

์ง€๊ธˆ๊นŒ์ง€์˜ ๊ทธ๋ฆฌ๊ธฐ ์ž‘์—…์€ ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒ€์€์ƒ‰ ์„ ๊ณผ ํฐ์ƒ‰์œผ๋กœ ์ฑ„์›Œ์ง„ ๋„ํ˜•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์–ด์„œ ๋‹ค์Œ ํฌ์ŠคํŒ…์— ์ƒ‰์ƒ์„ ์ž…ํ˜€ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•