mfc_CImage - 8BitsCoding/RobotMentor GitHub Wiki
CImage Ctrl์ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง ์ถ๋ ฅ
BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// ์ด ๋ํ ์์์ ์์ด์ฝ์ ์ค์ ํฉ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฃผ ์ฐฝ์ด ๋ํ ์์๊ฐ ์๋ ๊ฒฝ์ฐ์๋
// ํ๋ ์์ํฌ๊ฐ ์ด ์์
์ ์๋์ผ๋ก ์ํํฉ๋๋ค.
SetIcon(m_hIcon, TRUE); // ํฐ ์์ด์ฝ์ ์ค์ ํฉ๋๋ค.
SetIcon(m_hIcon, FALSE); // ์์ ์์ด์ฝ์ ์ค์ ํฉ๋๋ค.
// TODO: ์ฌ๊ธฐ์ ์ถ๊ฐ ์ด๊ธฐํ ์์
์ ์ถ๊ฐํฉ๋๋ค.
m_my_image.Load(L"test.png");
return TRUE; // ํฌ์ปค์ค๋ฅผ ์ปจํธ๋กค์ ์ค์ ํ์ง ์์ผ๋ฉด TRUE๋ฅผ ๋ฐํํฉ๋๋ค.
}
void CMFCApplication1Dlg::OnPaint()
{
CPaintDC dc(this); // ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ์ํ ๋๋ฐ์ด์ค ์ปจํ
์คํธ์
๋๋ค.
if (IsIconic())
{
// ...
}
else
{
// ํฌ๋ช
๋ ํ์ธ์ ์ํ ์ฌ๊ฐํ ์ถ๋ ฅ
dc.FillSolidRect(100, 100, 200, 200, RGB(0, 0, 255));
int w = m_my_image.GetWidth();
int h = m_my_image.GetHeight();
// m_my_image.Draw(dc, 0, 0, w/2, h/2); // ์๋ณธ ๊ทธ๋ฆผ์ด w/2, h/2๋งํผ ์๊ฒ ์ถ๋ ฅ๋๋ค.
// m_my_image.Draw(dc, 0, 0, w*2, h*2); //์๋ณธ ๊ทธ๋ฆผ์ด w*2, h*2๋งํผ ํฌ๊ฒ ์ถ๋ ฅ๋๋ค.
m_my_image.Draw(dc, 0, 0, 200, 200, 50, 50, 200, 200); // ๊ทธ๋ฆผ์ ์ผ๋ถ๋ง ๊ทธ๋ฆฐ๋ค.
// m_my_image.Draw(dc, 0, 0, 200*2, 200*2, 50, 50, 200, 200); // ์ ๊ทธ๋ฆผ์ 2๋ฐฐ ํ๋ํ๋ค.
// 0, 0,์ ์ถ๋ ฅ์ขํ
// CDialogEx::OnPaint();
m_my_image.AlphaBlend(dc, 0, 0, 100); // ํฌ๋ช
๋๋ฅผ ์ค์ ํ๋ค.
m_my_image.Draw(dc, m_pos.x - 50, m_pos.y - 50, 100, 100, m_pos.x - 50, m_pos.y - 50, 100, 100);
// ํด๋ฆญํ ์ง์ ์ ๋ค์ ๊ทธ๋ฆฐ๋ค.
m_my_image.Draw(dc, w, 0, 100*2, 100*2, m_pos.x - 50, m_pos.y - 50, 100, 100);
// ํด๋ฆญํ ์ง์ ์ ํ๋ํด์ ๊ทธ๋ฆฐ๋ค.
}
}
void CMFCApplication1Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_pos = point;
Invalidate();
CDialogEx::OnLButtonDown(nFlags, point);
}
Example 2
// Dlg.h
CImage m_mem_view;
// OnInitDialog
CRect r;
GetClientRect(r);
m_mem_view.Create(r.Width(), r.Height(), 32);
// OnPaint()
CPaintDC dc(this);
// ...
m_mem_view.Draw(dc, 0, 0);
// OnTimer
if (nIDEvent == 1) {
HDC h_dc = m_mem_view.GetDC();
CDC * p_dc = CDC::FromHandle(h_dc);
CBrush fill_brush, *p_old_brush = p_dc->GetCurrentBrush();
p_dc->FillSolidRect(0, 0, m_mem_view.GetWidth(), m_mem_view.GetHeight(), RGB(220, 220, 220));
p_dc->Ellips(//..);
m_mem_view.ReleaseDC();
}