U E D R S I H C RSS
ID
Password
Join
๋ฌด์–ธ๊ฐ€์— ์—ด์‹ฌ์ผ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ทธ ์ž์ฒด๋งŒ์œผ๋กœ๋„ ์ด๋ฏธ ์žฌ๋Šฅ์ด ์žˆ๋‹ค๋Š”๊ฑฐ์ฃ . - ๋งŒํ™” "๊ฐ•์ฒ ์˜ ์—ฐ๊ธˆ์ˆ ์‚ฌ"์—์„œ ๋™์ƒ ์•Œํฐ์Šค์˜ ๋Œ€์‚ฌ.

๏ปฟ

Contents

1 ์•Œ๋ฆผ
2 ๋ถ€๋ถ„ ์„ค๋ช…
2.1 DDB(Device Dependent Bitmap)์ด๋ž€?

1 ์•Œ๋ฆผ #

  • ์˜ˆ์ œ๊ฐ€ ์ข€ ๊ธด ๊นŒ๋‹ญ์— ์••์ถ•ํ™”์ผ๋กœ ์˜ฌ๋ ค๋‘ก๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ์†Œ์Šค : @testbitmap.zip (43.68 KB)

2 ๋ถ€๋ถ„ ์„ค๋ช… #

2.1 DDB(Device Dependent Bitmap)์ด๋ž€? #

  • win32 API์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋กœ ํŽธ์ž…๋˜์–ด์žˆ๋Š” ๋น„ํŠธ๋งต์„ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌผ๋ก  ๊ฒŒ์ž„์ œ์ž‘์—์„œ๋Š” ๊ฑฐ์˜~ ์•ˆ์“ฐ์ธ๋‹ค๊ณ  ๋ด๋„... :) )์•„๋งˆ๋„ ์ด ๋ฐฉ๋ฒ•์ด ๋น„ํŠธ๋งต์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘์—๋Š” ๊ฐ€์žฅ ์‰ฌ์šด๋ฐฉ๋ฒ•์ด ์•„๋‹Œ๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฐฉ๋ฒ•์€ ๋น„ํŠธ๋งต์˜ ํ‘œํ˜„์ƒ‰์ƒ์ด ํ™”๋ฉด ํ‘œํ˜„์ƒ‰์ƒ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ƒ‰์ƒ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ(์˜ˆ:ํŒ”๋ ˆํŠธ๊ฐ€ ๋‹ค๋ฅธ๊ฒฝ์šฐ)๋ผ๋ฉด ์ƒ‰์ƒ์ด ๊นจ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด DIB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„ํŠธ๋งต์„ ์ฝ์–ด๋“ค์ด๋Š” ์ˆœ์„œ
    1. ๋น„ํŠธ๋งต์— ์ ์šฉํ•  Device Context ํ•ธ๋“ค ์ƒ์„ฑ - [http]CreateCompatibleDC() API ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HDC๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น DC์™€ ํ˜ธํ™˜๋˜๋Š” DC๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ํ•ธ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์— NULL์„ ์ง€์ •ํ•˜๋ฉด ํ˜„์žฌ ํ™”๋ฉด์„ค์ •๊ณผ ํ˜ธํ™˜๋˜๋Š” DC๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, ์˜ˆ๋ฅผ ๋“ค๋ฉด ํ™”๋ฉด ๋™์‹œํ‘œํ˜„์ƒ‰์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋น„ํŠธ๋งต์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค)
      HDC hdc_bm = CreateCompatibleDC(NULL);
      
    2. HBITMAP ๊ฐ’ ์ƒ์„ฑ - ๋น„ํŠธ๋งต์„ ์ฝ์–ด๋“ค์—ฌ ๋น„ํŠธ๋งต ์Šคํ†ก ๊ฐ์ฒด ํ•ธ๋“ค๊ฐ’์„ ์–ป์–ด๋ƒ…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” [http]LoadBitmap() API ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ํ˜„์žฌ ๋ฆฌ์†Œ์Šค์— ๋“ฑ๋ก๋œ ๋น„ํŠธ๋งต์ด IDB_BITMAP1์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (VC/ํŒ๋ชจ์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.)
      HBITMAP hbm = LoadBitmap((HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDB_BITMAP1));
      
      ๋งŒ์ผ ๋น„ํŠธ๋งต์„ ๋กœ๋”ฉํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ํ……๋นˆ ๋น„ํŠธ๋งต์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค๋ฉด [http]CreateCompatibleBitmap() ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (DIB ์ฒ˜๋ฆฌ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค) ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ์€ 120 * 100 ํฌ๊ธฐ์˜ ํ™”๋ฉด์ƒ‰์ƒ์ˆ˜์™€ ๊ฐ™์€ ๋น„ํŠธ๋งต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      HBITMAP memBM = CreateCompatibleBitmap ( hdc, 120, 100 );
      
    3. ์ด์ œ ์ƒ์„ฑํ•œ ๋น„ํŠธ๋งต ํ•ธ๋“ค์„ ์ƒ์„ฑํ•œ HDC์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒฝ์šฐ ๋น„ํŠธ๋งต ์—ญ์‹œ ์Šคํ†ก ๊ฐ์ฒด์ด๋ฏ€๋กœ [http]SelectObject()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ๋ณด๊ด€ํ•ด์„œ ๋‚˜์ค‘์— ์žฌ์„ค์ •ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์„ธ์š”.
      HBITMAP old_hbm = (HBITMAP)SelectObject(hdc_bm, hbm);
      
    4. ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” HDC์— ์ด ๋น„ํŠธ๋งต์ด ์ ์šฉ๋œ HDC๋ฅผ ๊ฐ€์ง€๊ณ  ๊ทธ๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    5. ๋ชจ๋“  ๊ทธ๋ฆฌ๊ธฐ๊ฐ€ ๋๋‚˜๊ณ  ํ•ด๋‹น ๋น„ํŠธ๋งต์„ ํ•ด์ œํ•˜๋ ค๋ฉด, (1) ์šฐ์„  SelectObject(hdc_bm, old_hbm)์„ ์‹คํ–‰ํ•˜์—ฌ ์ด์ „ DC์— ์ ์šฉ๋œ ๋น„ํŠธ๋งต ์ •๋ณด๋ฅผ ํ•ด์ œํ•˜๊ณ , (2) ๋น„ํŠธ๋งตํ•ธ๋“ค์€ DeleteObject(), ๋ฉ”๋ชจ๋ฆฌ DC๋Š” DeleteDC()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ ํ•ด์ œํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๋น„ํŠธ๋งต์€ ๊ธฐ๋ณธ์ ์œผ๋กœ [http]BitBlt() API ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:54
Processing time 0.5244 sec