[GDI] Part 2. ์๋ํจ์ #1
์ , ์ , ์ฌ๊ฐํ, ์ํ, ๋ค๊ฐํ ๋ฑ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ํจ์๋ฅผ '์๋ํจ์'๋ผ๊ณ ์ ์ํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ , ์ฌ๊ฐํ, ์ํ, ์์์ ์ ํ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
โป ๊ตฌ์ฒด์ ์ธ ํจ์์ ์ ์์ ์ค๋ฒ๋ก๋ฉ ํจ์๋ฅผ ํ์ธํ๋ ค๋ฉด 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);
์ง๊ธ๊น์ง์ ๊ทธ๋ฆฌ๊ธฐ ์์ ์ ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒ์์ ์ ๊ณผ ํฐ์์ผ๋ก ์ฑ์์ง ๋ํ์ด์์ต๋๋ค.
์ด์ด์ ๋ค์ ํฌ์คํ ์ ์์์ ์ ํ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
'Programming > MFC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GDI+] Part 2. ์๋ํจ์ (0) | 2019.01.27 |
---|---|
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ (0) | 2019.01.27 |
[GDI] Part 2. ์๋ํจ์ #2 (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 |
[Button Control] ๋์ ์์ฑ (11) | 2017.06.25 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ
2019.01.27GDI+ ๋ GDI ์์ ํ์ฅ๋ ๊ฐ๋ ์ ๋๋ค. ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. [GDI] Part 1. GDI ๊ฐ๋ ์ํฐ ์์ผ๋ฆฌ์ด์ฑ(Anti-Aliasing), ๋ ์ ์ฒ๋ฆฌ, ํฌ๋ช ๋ ๋ฑ ๋ณด๋ค ์ฝ๊ฒ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์์ GDI+๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ค๋น๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. stdafx.h ์ ๋ค์์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. // stdafx.h #include #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus; App header file์ ๋ค์์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. // Project Name : My_GDIPlus class CMy_GDIPlusApp : public CWinApp { public: Cโฆ -
[GDI] Part 2. ์๋ํจ์ #2
[GDI] Part 2. ์๋ํจ์ #2
2019.01.27์ด์ ํฌ์คํ ์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก '์ / ์ง์ฌ๊ฐํ / ์ํ'์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค. [GDI] Part 2. ์๋ํจ์ #1 ๊ณ์ํด์ ์์์ ์ ํ ๋ํ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค. ์์์ ์์ฑ์ ์ค์ ํ ์ ์๊ฒ ๋์์ฃผ๋ Object๋ค๊ณผ ๊ฐ์ด ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. PenPen์ ์ ์ ๊ทธ์ ๋ ์ฌ์ฉํฉ๋๋ค. Pen์๋ ์ ์ ๋ชจ์์ด๋ ์์์ ์ค์ ํ ์ ์์ต๋๋ค. MFC์์ Pen์ CPen ํด๋์ค๋ก ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ค์์ ์์ ๋ก ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. // Picture control ์ผ๋ก๋ถํฐ DC ์ป๊ธฐ. CClientDC dc(GetDlgItem(IDC_PC_VIEW)); // ์์ฑํ myPen๊ณผ ์ฌ์ฉ์ค์ด๋ Pen ์์ฑ์ ๋ฐฑ์ ํ pOldPen์ ์ ์ํ๋ค. CPen myPen, *pOldPen; // ๋จ์โฆ -
[GDI] Part 1. GDI ๊ฐ๋
[GDI] Part 1. GDI ๊ฐ๋
2019.01.27GDI(Graphics Device Interface)๋ Windows ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๊ทธ๋ํฝ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ๋๋ค.๋ชจ๋ํฐ, ํ๋ฆฐํฐ ๋ฑ ์ถ๋ ฅ์ฅ์น์ ์ , ์ง์ , ๋ํ, ๋นํธ๋งต ๋ฑ์ ๊ทธ๋ํฝ ์ถ๋ ฅ์ ์ํด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ ์ ์๋ ํจ์์ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ๊ณตํฉ๋๋ค.์ฆ, ์ฌ์ฉ์๊ฐ ์ฅ์น๋ณ๋ก ์ด๋ป๊ฒ ์ถ๋ ฅ์ํฌ์ง ๊ณ ๋ฏผํ ํ์ ์์ด GDI๋ง ์ฌ์ฉํด์ ์ถ๋ ฅ์ํฌ ์ ์๊ฒ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด GDI๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ ์์, ๋๊ป, ์์น ๋ฑ์ ์ธ์ธํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.์ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ํ, ๊ธ์, ๋นํธ๋งต๊น์ง ๋ค์ํฉ๋๋ค.ํ์ง๋ง ์ด๋ ๊ฒ ์์ธํ๊ฒ ์ ์ดํ ์ ์๋ ์ฅ์ ์ด ์๋ ๋ฐ๋ฉด, ์คํ๋ ค ์ผ์ผ์ด ์ค์ ํ๊ฒ๋๋ฉด ๋ถํธํ๊ฒ ๋์ง์. ๊ทธ๋์ DC(Device Context)๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํฉ๋๋ค.Windows Application ์โฆ -
[MFC] Custom Button ๋ง๋ค๊ธฐ
[MFC] Custom Button ๋ง๋ค๊ธฐ
2019.01.16์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก Custom Button ๋ง๋๋ ์์ ์ ์งํํ๊ฒ ์ต๋๋ค. (๋ณธ๋ฌธ ํ๋จ์ ์ํ ์ฝ๋๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค.) ๋จผ์ , 'MyButton'์ด๋ผ๋ Dialog Base์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ GDI+๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค. [GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ '์๋ฃจ์ ํ์๊ธฐ'์์ ํ๋ก์ ํธ์ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค. ('ํ๋ก์ ํธ ์ฐํด๋ฆญ > Add > Classโฆ.' ๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค.) ๋ค์๊ณผ ๊ฐ์ด ์ฐฝ์ด ์์ฑ๋๋ฉด '์ถ๊ฐ(Add)' ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ํด๋์ค์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์๋ 'CSkinButton'์ด๋ผ๊ณ ์ด๋ฆ์ ์ง๊ฒ ์ต๋๋ค. 'Finish' ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด 'SkinButton.cpp/h' ํ์ผ์ด ์ถ๊ฐ๋ฉโฆ
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.