[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 memDC;
CBitmap *pOldBitmap, bitmap;
// Picture Control DC์ ํธํ๋๋ ์๋ก์ด CDC๋ฅผ ์์ฑ. (์์ ๋ฒํผ)
memDC.CreateCompatibleDC(&dc);
// Picture Control์ ํฌ๊ธฐ์ ๋์ผํ ๋นํธ๋งต์ ์์ฑ.
bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
// ์์ ๋ฒํผ์์ ๋ฐฉ๊ธ ์์ฑํ ๋นํธ๋งต์ ์ ํํ๋ฉด์, ์ด์ ๋นํธ๋งต์ ๋ณด์กด.
pOldBitmap = memDC.SelectObject(&bitmap);
// ์์ ๋ฒํผ์ ๊ฒ์์์ผ๋ก ์ฑ์.
memDC.PatBlt(0, 0, rect.Width(), rect.Height(), BLACKNESS);
// ์์ ๋ฒํผ(memDC)์ ๊ทธ๋ฆฌ๋ ๋์์ ์ํ.
// ...
// ...
// ์์ ๋ฒํผ๋ฅผ Picture Control์ ๊ทธ๋ฆฐ๋ค.
dc.BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
// ์ด์ ๋นํธ๋งต์ผ๋ก ์ฌ์ค์ .
memDC.SelectObject(pOldBitmap);
// ์์ฑํ ๋ฆฌ์์ค ํด์ .
memDC.DeleteDC();
bitmap.DeleteObject();
}
์ด๋ฏธ์ง๋ CrossLine, ๋ํ๊ฐ์ ๊ฒ์ ๊ทธ๋ฆด ๋ ํ์ํ ๋ถ๋ถ์ ์์น์์ memDC์ ๊ทธ๋ฆฌ๋ฉด ๋๋ธ ๋ฒํผ๋ง์ผ๋ก ๋์ํฉ๋๋ค.
OnDrawImage()๋ผ๋ ํจ์๋ OnPaint() ๋๋ ์ฌ์ฉ์ ์ ์ ์์น์์ ํธ์ถํด๋ ์๊ด ์์ต๋๋ค.
โป ์ฐธ๊ณ ๋ก, ์ ์์ ๋ Picture Control ์ด๋ผ๋ Control์ ๊ทธ๋ฆฌ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ CClientDC๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Custom UI ์์ ์ OnPaint์์ ์์ ํ๋ ๊ฒฝ์ฐ์๋ CPaintDC๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
'Programming > MFC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MFC] lib, dll ํด๋์ ํ์ผ ๋ชฉ๋ก ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ (0) | 2019.05.25 |
---|---|
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ (3) | 2019.03.02 |
[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ (0) | 2019.02.28 |
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ (0) | 2019.02.24 |
[GDI+] Part 2. ์๋ํจ์ (0) | 2019.01.27 |
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ (0) | 2019.01.27 |
[GDI] Part 2. ์๋ํจ์ #2 (0) | 2019.01.27 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
2019.03.02 -
[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
2019.02.28 -
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
2019.02.24 -
[GDI+] Part 2. ์๋ํจ์
[GDI+] Part 2. ์๋ํจ์
2019.01.27