๋ฐ˜์‘ํ˜•

GDI(Graphics Device Interface)๋Š” Windows ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์ถœ๋ ฅ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ ๋“ฑ ์ถœ๋ ฅ์žฅ์น˜์— ์„ , ์ง์„ , ๋„ํ˜•, ๋น„ํŠธ๋งต ๋“ฑ์˜ ๊ทธ๋ž˜ํ”ฝ ์ถœ๋ ฅ์„ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์™€ ๊ตฌ์กฐ์ฒด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์žฅ์น˜๋ณ„๋กœ ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅ์‹œํ‚ฌ์ง€ ๊ณ ๋ฏผํ•  ํ•„์š” ์—†์ด GDI๋งŒ ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


์ด GDI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ ์˜ ์ƒ‰์ƒ, ๋‘๊ป˜, ์œ„์น˜ ๋“ฑ์„ ์„ธ์„ธํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋„ํ˜•, ๊ธ€์ž, ๋น„ํŠธ๋งต๊นŒ์ง€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ž์„ธํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด, ์˜คํžˆ๋ ค ์ผ์ผ์ด ์„ค์ •ํ•˜๊ฒŒ๋˜๋ฉด ๋ถˆํŽธํ•˜๊ฒŒ ๋˜์ง€์š”.


๊ทธ๋ž˜์„œ DC(Device Context)๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

Windows Application ์—์„œ ํ™”๋ฉด์ถœ๋ ฅ์„ ์œ„ํ•œ ์ถœ๋ ฅ ์†์„ฑ์„ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ์ฒด ์ž…๋‹ˆ๋‹ค.


๊ธฐ๋ณธ ์˜ต์…˜๊ฐ’์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์˜ต์…˜์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜์—ฌ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด DC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ MFC์—์„œ๋Š” CDC Class ์•ˆ์— DC์— ๊ด€ํ•œ ๊ฒƒ์„ ์ •์˜ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ CDC ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š” CDC ํŒŒ์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


CDC ํŒŒ์ƒ ํด๋ž˜์Šค๋กœ๋Š” ๋‹ค์Œ์˜ 4์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


CClientDC

    WM_PAINT ๋ฉ”์‹œ์ง€๋ฅผ ์ œ์™ธํ•œ ์œˆ๋„์šฐ์˜ ์ž‘์—…์˜์—ญ์— ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ.

    GetDC() / ReleaseDC() ํ•จ์ˆ˜๋ฅผ ํฌํ•จ.


CPaintDC

    WM_PAINT ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค.

    OnPaint / OnDraw ๋‚ด์—์„œ ์‚ฌ์šฉ.

    BeginPaint() / EndPaint() ํ•จ์ˆ˜๋ฅผ ํฌํ•จ.


CWindowDC

    ์ „์ฒด ์œˆ๋„์šฐ ์˜์—ญ(ํƒ€์ดํ‹€๋ฐ”, ๋ฉ”๋‰ด๋ฐ” ๋“ฑ์„ ํฌํ•จ)์—์„œ ์‚ฌ์šฉ.


CMetaFileDC

    ๋ฉ”ํƒ€ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉ.


Win32 API ์—์„œ DC๋ฅผ ์–ป์œผ๋ฉด ํ•ด์ œํ•˜๋Š” ์ž‘์—…๋„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์ •์„์ž…๋‹ˆ๋‹ค.

(GetDC() ์™€ RelaseDC()๋ฅผ ํ†ตํ•ด DC๋ฅผ ์–ป๊ณ  ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.)


ํ•˜์ง€๋งŒ MFC์—์„œ ํŒŒ์ƒํด๋ž˜์Šค์ธ CClientDC ์—๋Š” ์ด ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜์—ฌ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ํ•ด์ œ ์ž‘์—…์ด ํ•„์š”์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Picture Control์— ๋น„ํŠธ๋งต์ด๋‚˜ ์นด๋ฉ”๋ผ์˜ ์˜์ƒ, Overlay ์ž‘์—… ๋“ฑ์„ ํ•  ๋•Œ CClientDC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.


์ž, ์—ฌ๊ธฐ๊นŒ์ง€ GDI์˜ ๊ฐœ๋…๊ณผ ์ด๋ฅผ ์œ„ํ•œ DC, CDC๋ฅผ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ , ์„ , ์‚ฌ๊ฐํ˜•, ์›ํ˜•, ๋‹ค๊ฐํ˜• ๋“ฑ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜์ธ '์ž‘๋„ํ•จ์ˆ˜'๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๋ฐ˜์‘ํ˜•