[GDI+] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
๋๋ธ ๋ฒํผ๋ง์ ๋ํ ๋ด์ฉ์ ์๋ ๊ธ์ ์ฝ์ด์ฃผ์ธ์.
์ด๋ฒ์๋ GDI+ ๋๋ธ ๋ฒํผ๋ง ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
GDI ๋๋ธ ๋ฒํผ๋ง ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ํ, GDI+๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น๋จ๊ณ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
ํ๋ก์ ํธ ์์ฑ ํ OnDrawImage()๋ผ๋ ํจ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ฝ๋ ์ฌ์ฉ๋ฒ
void CDoubleBufferingDlg::OnDrawImage()
{
// Picture Control DC๋ฅผ ์์ฑ.
CClientDC dc(GetDlgItem(IDC_PC_IMAGE));
// Picture Control ํฌ๊ธฐ๋ฅผ ์ป๋๋ค.
CRect rect;
GetDlgItem(IDC_PC_IMAGE)->GetClientRect(&rect);
// Picture Control์ ํธํ๋๋ Graphics ์์ฑ.
Graphics mainG(dc.GetSafeHdc());
// Picture Control ํฌ๊ธฐ๋ก ๋นํธ๋งต(์์ ๋ฒํผ) ์์ฑ.
Bitmap memBmp(rect.Width(), rect.Height());
// ์์ ๋ฒํผ์ ํธํ๋๋ Graphics ์์ฑ.
Graphics memG(&memBmp);
// ์์ ๋ฒํผ์ ๊ฒ์์์ผ๋ก ์ฑ์ฐ๊ธฐ.
SolidBrush brs(Color(255, 0, 0, 255));
memG.FillRectangle(&brs, 0, 0, rect.Width(), rect.Height());
// ๊ทธ๋ฆฌ๋ ์์
.
// ...
// ...
// ์์ ๋ฒํผ๋ฅผ Picture Control์ ๊ทธ๋ฆฌ๊ธฐ.
mainG.DrawImage(&memBmp, 0, 0);
}
GDI๋ ๋น๊ตํด์ GDI+์ ์ฝ๋๊ฐ ์กฐ๊ธ์ ๊ฐ๊ฒฐํด์ก์ฃ ?
์ด๋ฏธ์ง๋ CrossLine, ๋ํ๊ฐ์ ๊ฒ์ ๊ทธ๋ฆด ๋ ํ์ํ ๋ถ๋ถ์ ์์น์์ memG์ ๊ทธ๋ฆฌ๋ฉด ๋๋ธ ๋ฒํผ๋ง์ผ๋ก ๋์ํฉ๋๋ค.
OnDrawImage()๋ผ๋ ํจ์๋ OnPaint() ๋๋ ์ฌ์ฉ์ ์ ์ ์์น์์ ํธ์ถํด๋ ์๊ด ์์ต๋๋ค.
โป ์ฐธ๊ณ ๋ก, ์ ์์ ๋ Picture Control ์ด๋ผ๋ Control์ ๊ทธ๋ฆฌ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ CClientDC๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Custom UI ์์ ์ OnPaint์์ ์์ ํ๋ ๊ฒฝ์ฐ์๋ CPaintDC๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
'Programming > MFC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MFC] SendMessage์ PostMessage์ ์ฐจ์ด (์์ ์ฝ๋ ํฌํจ) (2) | 2019.08.26 |
---|---|
[MFC] lib, dll ํด๋์ ํ์ผ ๋ชฉ๋ก ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ (0) | 2019.05.25 |
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ (3) | 2019.03.02 |
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ (2) | 2019.02.26 |
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ (0) | 2019.02.24 |
[GDI+] Part 2. ์๋ํจ์ (0) | 2019.01.27 |
[GDI+] Part 1. GDI+ ์ค๋น ๋จ๊ณ (0) | 2019.01.27 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[MFC] lib, dll ํด๋์ ํ์ผ ๋ชฉ๋ก ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ
[MFC] lib, dll ํด๋์ ํ์ผ ๋ชฉ๋ก ์ฝ๊ฒ ์ป๋ ๋ฐฉ๋ฒ
2019.05.25 -
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
[GDI] ์ด๋ฏธ์ง์ ์์ง์ด๋ ์ง์ ๊ทธ๋ฆฌ๊ธฐ
2019.03.02 -
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์ฌ์ฉํ๊ธฐ
2019.02.26 -
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
[GDI] ๋๋ธ ๋ฒํผ๋ง(Double Buffering) ์๊ฐ
2019.02.24