CView OnDraw中显示位图,并在 resize 时使位图始终显示在客户区左下角

首先在 CMainFrame 中定义三个共有成员变量

public:
	HBITMAP m_hLogo;
	int m_nBmpHeight;
	int m_nBmpWidth;

在构造函数、析构函数中

CMainFrame::CMainFrame()
{
	m_hLogo = (HBITMAP)::LoadImage(NULL, "resource\\banner.bmp", IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
	if(m_hLogo)
	{
		BITMAP bitmap;
		GetObject(m_hLogo,sizeof(BITMAP),&bitmap);
		m_nBmpHeight = bitmap.bmHeight;
		m_nBmpWidth = bitmap.bmWidth;
	}
	else
	{
		m_nBmpHeight = 380;
		m_nBmpWidth = 658;
	}
}

CMainFrame::~CMainFrame()
{
	if(m_hLogo)
		::DeleteObject(m_hLogo);
}

在 CView OnDraw 中

void CCGUIView::OnDraw(CDC* pDC)
{
	CCGUIDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	CRect rect;
	GetWindowRect(&rect);

	HDC hdcDest = ::GetDC(m_hWnd);
	HDC hdcSrc = ::CreateCompatibleDC(hdcDest);
	CMainFrame * pMainFrm = (CMainFrame *)::AfxGetApp()->m_pMainWnd;
	::SelectObject(hdcSrc, pMainFrm->m_hLogo);
	::StretchBlt(hdcDest,0, rect.Height()-pMainFrm->m_nBmpHeight, pMainFrm->m_nBmpWidth, pMainFrm->m_nBmpHeight, hdcSrc, 0, 0, pMainFrm->m_nBmpWidth, pMainFrm->m_nBmpHeight, SRCCOPY); 
	::ReleaseDC(m_hWnd, hdcDest);	
	::DeleteDC(hdcSrc);				
}


转载于:https://www.cnblogs.com/silyvin/archive/2012/03/12/9106911.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值