[GDI] Part 2. ์๋ํจ์ #2
์ด์ ํฌ์คํ ์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก '์ / ์ง์ฌ๊ฐํ / ์ํ'์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค.
๊ณ์ํด์ ์์์ ์ ํ ๋ํ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
์์์ ์์ฑ์ ์ค์ ํ ์ ์๊ฒ ๋์์ฃผ๋ Object๋ค๊ณผ ๊ฐ์ด ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Pen
Pen์ ์ ์ ๊ทธ์ ๋ ์ฌ์ฉํฉ๋๋ค. Pen์๋ ์ ์ ๋ชจ์์ด๋ ์์์ ์ค์ ํ ์ ์์ต๋๋ค.
MFC์์ Pen์ CPen ํด๋์ค๋ก ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ค์์ ์์ ๋ก ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
// Picture control ์ผ๋ก๋ถํฐ DC ์ป๊ธฐ.
CClientDC dc(GetDlgItem(IDC_PC_VIEW));
// ์์ฑํ myPen๊ณผ ์ฌ์ฉ์ค์ด๋ Pen ์์ฑ์ ๋ฐฑ์
ํ pOldPen์ ์ ์ํ๋ค.
CPen myPen, *pOldPen;
// ๋จ์, ๋๊ป 2, Red ์์์ ์์ฑ์ ๊ฐ์ง ํ์ ์์ฑํ๋ค.
myPen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
// ์๋ก ๋ง๋ myPen์ ์ฌ์ฉํจ๊ณผ ๋์์ ์ด์ ์ ์ฌ์ฉ์ค์ด๋ Pen ์์ฑ์ ๋ฐฑ์
ํ๋ค.
pOldPen = dc.SelectObject(&myPen);
// ํ์ฌ ์์น๋ฅผ (100, 100)์ผ๋ก ์ด๋ํ๊ธฐ.
dc.MoveTo(100, 100);
// ์ง์ ์ ํ์ฌ ์์น์ธ (100, 100) ๋ถํฐ (200, 200) ๊น์ง ๊ทธ๋ฆฌ๊ธฐ.
dc.LineTo(200, 200);
// ๊ทธ๋ฆฌ๋ ์์
์ด ๋๋๋ฉด ๋ฐฑ์
ํ Pen ์์ฑ์ ๋ค์ ์ ํํ๋ค.
dc.SelectObject(pOldPen);
// ์์ฑํ Pen์ ์ ๊ฑฐํ๋ค.
myPen.DeleteObject();
๊ฐ์๊ธฐ ๋ณต์กํด์ก์ฃ ? GDI Object๋ฅผ ์ฌ์ฉํ ๋ ๊ผญ ์ฃผ์ํ ์ ์ด ์์ต๋๋ค.
์ฌ์ฉ ์ค์ด๋ ์์ฑ์ ๋ฐฑ์ ํ ์ธ์คํด์ค๋ฅผ ํญ์ ์ ์ธํ๋ค.
GDI Object๋ฅผ ์ฌ์ฉํ ๋ ์ด์ ์ ์ฌ์ฉ์ค์ด๋ ์์ฑ์ ๋ฐฑ์ ํ์ง ์์ผ๋ฉด ๊ณ์ํด์ ๋ง๋ ์์ฑ์ด ๋ฎ์ฌ์ง๊ธฐ ๋๋ฌธ์ ๋๋๋ฆด ์๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ ์๋ ์ด๋ค ์ค๋ธ์ ํธ๊ฐ ์ ํ๋์ด ์์๋์ง ์ ์ ์๋ ์ํฉ์ด ๋๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์์ฑ์ ํ๋ฉด ๋ฐ๋์ ํด์ ํ๋ค.
์ ์์ ์์ CreatePen ์ ํธ์ถํ๊ณ ์ฌ์ฉ์ด ๋๋๋ฉด DeleteObject๋ฅผ ํธ์ถํ์ต๋๋ค.
์์๊ฐ์ด ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ฆฌ์์ค ๋์๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ GDI Object๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์ด๋ ์๊ฐ๋ถํฐ ๊ทธ๋ฆฌ๋ ์์ ์ด ๋ฉ์ถ ๊ฒ์ ๋๋ค.
โป ๋ฆฌ์์ค ๋์๋ '์์ ๊ด๋ฆฌ์'์์ ํ๋ก์ธ์ค๋ณ๋ก 'GDI ๊ฐ์ฒด'๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ,
๊ทธ ์ธ์ ๋ฆฌ์์ค ๋์ ๊ฐ์ง ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ ์์ต๋๋ค.
Brush
Brush๋ ๋ฉด์ ์์ ์ฑ์ธ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
MFC์์ Brush๋ CBrush ํด๋์ค๋ก ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ค์์ ์์ ๋ก ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
// Picture control ์ผ๋ก๋ถํฐ DC ์ป๊ธฐ.
CClientDC dc(GetDlgItem(IDC_PC_VIEW));
// ์์ฑํ myBrs์ ์ฌ์ฉ์ค์ด๋ Brush ์์ฑ์ ๋ฐฑ์
ํ pOldBrs๋ฅผ ์ ์ํ๋ค.
CBrush myBrs(RGB(255, 0, 0)), *pOldBrs;
// ์๋ก ๋ง๋ myBrs๋ฅผ ์ฌ์ฉํจ๊ณผ ๋์์ ์ด์ ์ ์ฌ์ฉ์ค์ด๋ Brush ์์ฑ์ ๋ฐฑ์
ํ๋ค.
pOldBrs = dc.SelectObject(&myBrs);
// (100,100) ๋ถํฐ (200,200) ๊น์ง์ ์ง์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ.
dc.Rectangle(100, 100, 200, 200);
// ๊ทธ๋ฆฌ๋ ์์
์ด ๋๋๋ฉด ๋ฐฑ์
ํ Brush ์์ฑ์ ๋ค์ ์ ํํ๋ค.
dc.SelectObject(pOldBrs);
// ์์ฑํ Brush๋ฅผ ์ ๊ฑฐํ๋ค.
myBrs.DeleteObject();
์ ์์ ๋ ์ฌ์ค FillSolidRect(100, 100, 100, 100, RGB(255, 0, 0)); ์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋ค๋ฅผ๊ฒ ์์ต๋๋ค.
๋ณดํต Hatch Brush๋ Pattern Brush๋ฅผ ์ฌ์ฉํ ๋ ์์ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
Hatch / Pattern Brush ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ MSDN ์ฐธ๊ณ ๋ฐ๋๋๋ค.
๋ง์ฝ, ๋ํ์ ์ ๊ณผ ๋ฉด ์์ ๋ชจ๋๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ์ ๋ ๊ณผ์ ์ ์์ผ๋ฉด ๋๊ฒ ์ฃ ?
์ํ์ฝ๋๋ฅผ ์ฒจ๋ถํ์์ผ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์.
'Programming > MFC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ (0) | 2019.02.24 |
---|---|
[GDI+] Part 2. ์๋ํจ์ (0) | 2019.01.27 |
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ (0) | 2019.01.27 |
[GDI] Part 2. ์๋ํจ์ #1 (0) | 2019.01.27 |
[GDI] Part 1. GDI ๊ฐ๋ (0) | 2019.01.27 |
[MFC] Custom Button ๋ง๋ค๊ธฐ (5) | 2019.01.16 |
[MFC] Custom Button ์๊ฐ (0) | 2019.01.15 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[GDI+] Part 2. ์๋ํจ์
[GDI+] Part 2. ์๋ํจ์
2019.01.27 -
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ
2019.01.27 -
[GDI] Part 2. ์๋ํจ์ #1
[GDI] Part 2. ์๋ํจ์ #1
2019.01.27 -
[GDI] Part 1. GDI ๊ฐ๋
[GDI] Part 1. GDI ๊ฐ๋
2019.01.27