๋ฌด์ธ๊ฐ์ ์ด์ฌ์ผ์ ์๋ค๋ ๊ทธ ์์ฒด๋ง์ผ๋ก๋ ์ด๋ฏธ ์ฌ๋ฅ์ด ์๋ค๋๊ฑฐ์ฃ . - ๋งํ "๊ฐ์ฒ ์ ์ฐ๊ธ์ ์ฌ"์์ ๋์ ์ํฐ์ค์ ๋์ฌ.
1 ์๋ฆผ #
- ์์ ๊ฐ ์ข ๊ธด ๊น๋ญ์ ์์ถํ์ผ๋ก ์ฌ๋ ค๋ก๋๋ค.
- ์์ ์์ค :
testbitmap.zip (43.68 KB)
2.1 DDB(Device Dependent Bitmap)์ด๋? #
- win32 API์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ์์ค๋ก ํธ์
๋์ด์๋ ๋นํธ๋งต์ ์ฝ์ด๋ค์ผ ์ ์์ต๋๋ค. (๋ฌผ๋ก ๊ฒ์์ ์์์๋ ๊ฑฐ์~ ์์ฐ์ธ๋ค๊ณ ๋ด๋...
)์๋ง๋ ์ด ๋ฐฉ๋ฒ์ด ๋นํธ๋งต์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ค์๋ ๊ฐ์ฅ ์ฌ์ด๋ฐฉ๋ฒ์ด ์๋๊ฐ ํฉ๋๋ค.
- ์ด ๋ฐฉ๋ฒ์ ๋นํธ๋งต์ ํํ์์์ด ํ๋ฉด ํํ์์๋ณด๋ค ํฌ๊ฑฐ๋ ์์์ ๋ณด๋ฅผ ํํํ๊ธฐ ํ๋ ๊ฒฝ์ฐ(์:ํ๋ ํธ๊ฐ ๋ค๋ฅธ๊ฒฝ์ฐ)๋ผ๋ฉด ์์์ด ๊นจ์ง๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์๋๋ก ํ๋ ค๋ฉด DIB๋ฅผ ์ฌ์ฉํ์ฌ์ผ๋ง ํฉ๋๋ค.
- ๋นํธ๋งต์ ์ฝ์ด๋ค์ด๋ ์์
- ๋นํธ๋งต์ ์ ์ฉํ Device Context ํธ๋ค ์์ฑ -
CreateCompatibleDC() API ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. HDC๋ฅผ ๋ฃ์ผ๋ฉด ํด๋น DC์ ํธํ๋๋ DC๋ฅผ ์์ฑํ๊ณ ๊ทธ ํธ๋ค์ ๋ฐํํฉ๋๋ค. ๋งค๊ฐ๋ณ์์ NULL์ ์ง์ ํ๋ฉด ํ์ฌ ํ๋ฉด์ค์ ๊ณผ ํธํ๋๋ DC๋ฅผ ์์ฑํฉ๋๋ค. (์ฆ, ์๋ฅผ ๋ค๋ฉด ํ๋ฉด ๋์ํํ์์ ํด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ๋นํธ๋งต์ ์์ฑํ๊ฒ ๋ฉ๋๋ค)
HDC hdc_bm = CreateCompatibleDC(NULL);
- HBITMAP ๊ฐ ์์ฑ - ๋นํธ๋งต์ ์ฝ์ด๋ค์ฌ ๋นํธ๋งต ์คํก ๊ฐ์ฒด ํธ๋ค๊ฐ์ ์ป์ด๋
๋๋ค. ์ฌ๊ธฐ์๋
LoadBitmap() API ํจ์๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ผ ํ์ฌ ๋ฆฌ์์ค์ ๋ฑ๋ก๋ ๋นํธ๋งต์ด IDB_BITMAP1์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ์ด๋ค์ผ ์ ์์ต๋๋ค. (VC/ํ๋ชจ์์ ์ฐธ์กฐํ์ธ์.)
HBITMAP hbm = LoadBitmap((HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDB_BITMAP1));
๋ง์ผ ๋นํธ๋งต์ ๋ก๋ฉํ์ง ์๊ณ ๊ทธ๋ฅ ํ ๋น ๋นํธ๋งต์ ๋ง๋ค๋ ค๊ณ ํ๋ค๋ฉด
CreateCompatibleBitmap() ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. (DIB ์ฒ๋ฆฌ๋ ์ ์ฉํฉ๋๋ค) ์๋ฅผ ๋ค๋ฉด ๋ค์์ 120 * 100 ํฌ๊ธฐ์ ํ๋ฉด์์์์ ๊ฐ์ ๋นํธ๋งต์ ์์ฑํฉ๋๋ค.
HBITMAP memBM = CreateCompatibleBitmap ( hdc, 120, 100 );
- ์ด์ ์์ฑํ ๋นํธ๋งต ํธ๋ค์ ์์ฑํ HDC์ ์ ์ฉํฉ๋๋ค. ์ด๊ฒฝ์ฐ ๋นํธ๋งต ์ญ์ ์คํก ๊ฐ์ฒด์ด๋ฏ๋ก
SelectObject()๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐํ๊ฐ์ ๋ณด๊ดํด์ ๋์ค์ ์ฌ์ค์ ํด์ผํ๋ ๊ฒ์ ์ฃผ์ํ์ธ์.
HBITMAP old_hbm = (HBITMAP)SelectObject(hdc_bm, hbm);
- ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. ์ํ๋ HDC์ ์ด ๋นํธ๋งต์ด ์ ์ฉ๋ HDC๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ฆฌ๋ฉด ๋ฉ๋๋ค.
- ๋ชจ๋ ๊ทธ๋ฆฌ๊ธฐ๊ฐ ๋๋๊ณ ํด๋น ๋นํธ๋งต์ ํด์ ํ๋ ค๋ฉด, (1) ์ฐ์ SelectObject(hdc_bm, old_hbm)์ ์คํํ์ฌ ์ด์ DC์ ์ ์ฉ๋ ๋นํธ๋งต ์ ๋ณด๋ฅผ ํด์ ํ๊ณ , (2) ๋นํธ๋งตํธ๋ค์ DeleteObject(), ๋ฉ๋ชจ๋ฆฌ DC๋ DeleteDC()๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ ํด์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
- ๋นํธ๋งต์ ์ ์ฉํ Device Context ํธ๋ค ์์ฑ -
- ๋นํธ๋งต์ ๊ธฐ๋ณธ์ ์ผ๋ก
BitBlt() API ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด์ ์ถ๋ ฅํฉ๋๋ค.









