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();
}