Programming
[OpenCV] IplImage vs Mat ๋ฌด์์ ์ฌ์ฉํด์ผ ํ ๊น?
[OpenCV] IplImage vs Mat ๋ฌด์์ ์ฌ์ฉํด์ผ ํ ๊น?
2019.03.04OpenCV๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ตฌ์กฐ์ฒด๋ก IplImage์ Mat์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๋ ๋ค ์ ๊ณตํ๋ค๋ฉด, ์ด๋ค ๊ฒ์ ๊ณจ๋ผ ์ฌ์ฉํด์ผ ํ ๊น์? IplImage ๊ตฌ์กฐ์ฒด๋ OpenCV 1.x ๋ฒ์ , C์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ค๋ฆฌ์ง๋ ํฌ๋งท์
๋๋ค. ์๋นํ ์ค๋์ ๋ถํฐ ์ฌ์ฉํด์จ ํฌ๋งท์ด์ง์. ์ด ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ ๋น(allocate)๊ณผ ํด์ (deallocate)๋ฅผ ๋ฐ๋์ ํด์ผํฉ๋๋ค. cvReleaseImage()์ ๊ฐ์ API๋ฅผ ์ฌ์ฉํด์ ๋ง์ด์ฃ . IplImage๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ์ฝ๋ ์์ ๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. IplImage *pImage = cvLoadImage("lena.jpg"); // ... ์์
... cvReleaseImage(&pImage); Mat ๊ตฌ์กฐ์ฒด๋ C++์์ ์ฌ์ฉํ๊ธฐ ..
[OpenCV] Visual Studio 2015์์ OpenCV 4.0.1 ์ฌ์ฉํ๊ธฐ
[OpenCV] Visual Studio 2015์์ OpenCV 4.0.1 ์ฌ์ฉํ๊ธฐ
2019.03.03๋น์ ๊ฒ์ฌ ์ฅ๋น ํ์ฌ๋ ๋น์ ๊ฒ์ฌ๋ฅผ ์ํด์ ๋น์ ์๊ณ ๋ฆฌ์ฆ(ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ๊ฒ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ๊ฐ๋ฐํ์ฌ ์ฌ์ฉํ๋ ํ์ฌ๋ ์๊ณ , ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์
ํ์ฌ ์ฌ์ฉํ๋ ํ์ฌ๋ ์์ต๋๋ค. ๋จธ์ ๋น์ ์ฐ์
์์ ์ฃผ์ ๋น์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ ๋ค์์ ์ ํ๋ค์ด ์์ต๋๋ค. โ MVTec Halcon โก Cognex Vision Pro โข Euresys Open eVision โฃ Matrox MIL ์์์ ์ธ๊ธํ ์ฃผ์ 4๊ฐ ์ ํ๋ค์ ๋ชจ๋ ์ ๋ฃ์
๋๋ค. ํ์ง๋ง ์ ๋ฃ์ธ ๋งํผ ์ฑ๋ฅ ๋ฐ ๊ธฐ์ ์ง์์ ์ํํ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ฉด์ OpenCV๋ Computer Vision ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก, ์คํ ์์ค ํํ๋ก์ ๋๊ตฌ๋ ์ง ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ผ๋ถ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ..
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
2019.03.02์ด๋ฏธ์ง์ ํน์ ํ(Row) ๋๋ ์ด(Column)์์ ํ๋กํ์ผ(Profile) ๋ฐ์ดํฐ๋ฅผ ํ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์์ต๋๋ค. ์ฃผ๋ก ์กฐ๋ช
๋๋ ์นด๋ฉ๋ผ์ ๊ท ์ผ๋, ์ด๋ฌผ ์ ๋ฌด ๋ฑ์ ๋ณด๊ธฐ ์ํจ์ธ๋ฐ์. ๋จ์ํ ์๋ํธ ์ปจํธ๋กค(Edit control)์ ๋ผ์ธ์ ์์น ๊ฐ์ ์
๋ ฅํด์ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์ง๋ง, ์ฌ์ฉ์ ์
์ฅ์์๋ ์คํฌ๋กค๋ฐ ๋๋ ์ฌ๋ผ์ด๋ ์ปจํธ๋กค์ ์ด์ฉํ์ฌ ํ๋กํ์ผ ๋ผ์ธ์ ์์ง์ด๋ ๋ฐฉ๋ฒ์ด ๋์ฑ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ฌ๋ผ์ด๋ ์ปจํธ๋กค๋ก Vertical Line์ ์์ง์ด๋ ์์ ๋ฅผ ๋ณด์ฌ๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. โป ์์ ์ฝ๋๋ ํ๋จ์ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์๋ ๋งํฌ๋ฅผ ๊ผญ ์ฝ์ด์ฃผ์ธ์. [GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ [GDI] ๋๋ธ ๋ฒํผ๋ง(Double Bu..
[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
2019.02.28๋๋ธ ๋ฒํผ๋ง์ ๋ํ ๋ด์ฉ์ ์๋ ๊ธ์ ์ฝ์ด์ฃผ์ธ์.[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ ์ด๋ฒ์๋ GDI+ ๋๋ธ ๋ฒํผ๋ง ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. GDI ๋๋ธ ๋ฒํผ๋ง ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์. [GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ ๋ํ, GDI+๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น๋จ๊ณ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. [GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ ํ๋ก์ ํธ ์์ฑ ํ OnDrawImage()๋ผ๋ ํจ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ฝ๋ ์ฌ์ฉ๋ฒ void CDoubleBufferingDlg::OnDrawImage() { // Picture Control DC๋ฅผ ์์ฑ. CClientDC dc(GetDlgItem(IDC_PC_IMAGE)); // Picture Co..
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
2019.02.26๋๋ธ ๋ฒํผ๋ง์ ๋ํ ๋ด์ฉ์ ์๋ ๊ธ์ ์ฝ์ด์ฃผ์ธ์. [GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ ์ด๋ฒ์๋ GDI ๋๋ธ ๋ฒํผ๋ง ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ํ๋ก์ ํธ ์์ฑ ํ OnDrawImage()๋ผ๋ ํจ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.์ฝ๋ ์ฌ์ฉ๋ฒ void CDoubleBufferingDlg::OnDrawImage() { // Picture Control DC๋ฅผ ์์ฑ. // IDC_PC_IMAGE๋ Picture Control์ Resource ID. CClientDC dc(GetDlgItem(IDC_PC_IMAGE)); // Picture Control ํฌ๊ธฐ๋ฅผ ์ป๋๋ค. CRect rect; GetDlgItem(IDC_PC_IMAGE)->GetClientRect(&rect); CDC m..
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
2019.02.24์นด๋ฉ๋ผ์ ์ค์๊ฐ ์์๊ณผ ์ญ์ ์ (Crossline)์ ๊ฒน์ณ์(Overlay) ๊ทธ๋ฆฌ๋ ์์
์ ํด๋ณด์
จ๋์? Custom UI Control์ ๋ง๋ค๋ ์ค์, ์ปจํธ๋กค์ด ๊น๋นก์ด๋ ๊ฒฝํ์ ํด๋ณด์ ์ ์์ผ์ ๊ฐ์? ๋ฐ๋์๋ ์๋์ง๋ง ๋๋ถ๋ถ์ ๊น๋นก์ ํ์(Flicker)์ ๋๋ธ ๋ฒํผ๋ง(Double Buffering)์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊น๋นก์ ํ์์ด ์ ๋ฐ์ํ๋์ง ์๋ก ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์์ ๋ก, ์นด๋ฉ๋ผ ์์์ Overlay ์์
์ ๋๋ธ ๋ฒํผ๋ง์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ํฉ๋๋ค. โ ์นด๋ฉ๋ผ์ ์ค์๊ฐ ์์์ ๊ทธ๋ฆฐ๋ค. (์ฒซ ๋ฒ์งธ ํ๋ ์) โก ์ญ์ ์ ์ ๊ทธ๋ฆฐ๋ค. โข ์นด๋ฉ๋ผ์ ๋ค์ ์์์ ๊ทธ๋ฆฐ๋ค. (๋ ๋ฒ์งธ ํ๋ ์) โฃ ์ญ์ ์ ์ ๊ทธ๋ฆฐ๋ค. โค ๋ฐ๋ณต... ์์์ ๊ทธ๋ฆฌ๊ณ (Drawing), ๊ทธ ์์ ์ญ์ ์ ์ด ..
[GDI+] Part 2. ์๋ํจ์
[GDI+] Part 2. ์๋ํจ์
2019.01.27GDI+๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์๋ค๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํด ๋ณด๊ฒ ์ต๋๋ค. [GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ ์ด์ ๊ธ์์ GDI๋ก ์ง์ , ์ฌ๊ฐํ, ์ํ์ ์์์ ์
ํ ๊ทธ๋ฆฌ๋ ์์
์ ์ค๋ช
ํ์์ต๋๋ค. [GDI] Part 2. ์๋ํจ์ #1 [GDI] Part 2. ์๋ํจ์ #2 ์ด๋ฒ ๊ธ์์๋ GDI+๋ก ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ง์ ๊ทธ๋ฆฌ๊ธฐGDI+๋ GDI์๋ ๋ค๋ฅด๊ฒ 'Graphics'๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ฉฐ, Graphics๋ CDC ๋ก๋ถํฐ ์์ฑํ ์ ์์ต๋๋ค. ์๋ ์ฝ๋๋ง ๋ณด์์ ๋ GDI๋ ๋น๊ตํ๋ฉด ๋ด์ฉ์ด ๊ฐ์ํ๋์ง์? // Picture control ์ผ๋ก๋ถํฐ DC ์ป๊ธฐ. CClientDC dc(GetDlgItem(IDC_PC_VIEW)); // DC ๋ก๋ถํฐ Graphics ์์ฑ. Graphic..
[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 2. ์๋ํจ์ #1
[GDI] Part 2. ์๋ํจ์ #1
2019.01.27์ , ์ , ์ฌ๊ฐํ, ์ํ, ๋ค๊ฐํ ๋ฑ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ํจ์๋ฅผ '์๋ํจ์'๋ผ๊ณ ์ ์ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ , ์ฌ๊ฐํ, ์ํ, ์์์ ์
ํ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค. โป ๊ตฌ์ฒด์ ์ธ ํจ์์ ์ ์์ ์ค๋ฒ๋ก๋ฉ ํจ์๋ฅผ ํ์ธํ๋ ค๋ฉด MSDN์ ์ฝ์ด ๋ณด์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค. ์ ๊ทธ๋ฆฌ๊ธฐ์ ์ ๊ตฌ์ฑํ๋ ์์๋ ๋ ์ ์
๋๋ค. ๋ ์ ์ด ์ด์ด์ ธ ํ๋์ ์ง์ ์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ด์ฃ . ์๋์ฐ์์๋ ํ์ฌ์ ์ขํ๋ถํฐ ๋ชฉ์ ์ง์ ์ขํ๋ฅผ ์
๋ ฅํ์ฌ ์ง์ ์ ๊ทธ๋ฆด ์ ์์ต๋๋ค. ํจ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. //ํ์ฌ์ ์์น๋ฅผ ์ด๋์ํค๊ธฐ. CPoint MoveTo(int x, int y); //ํ์ฌ์์น์์ ํน์ ์์น ๊น์ง ์ ์ ๊ธ๊ธฐ. BOOL LineTo(int x, int y); ์์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. // Picture control ์ผ๋ก๋ถํฐ DC ์ป๊ธฐ. ..
[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' ํ์ผ์ด ์ถ๊ฐ๋ฉ..