温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

复制窗口指定位置的图片

发布时间:2020-07-29 06:16:25 来源:网络 阅读:395 作者:Chinayu2014 栏目:编程语言

有时候为了制作透明的控件,特别是外边缘不规则的控件,可将控件背后的窗口图片复制到控件中,重绘.这样控件看起来就象透明的.

.h文件中声明变量
CMemoryDC  m_EmptyMemDC;//空白内存DC(另外封装的CDC的类)
CBitmap	   m_BmpBackground;
void CLabel::CopyBackground(CDC * pDC)
{
	CRect theRt;//获取控件大小(此处是自定义的控件,在控件内部执行)
	GetWindowRect(&theRt);

	CPoint pt(theRt.left, theRt.top);
	::ScreenToClient(GetParent()->m_hWnd,&pt);

	CClientDC  clientDC(this->GetParent());
   //创建兼容位图
	m_BmpBackground.CreateCompatibleBitmap(&clientDC, m_rect.Width(), m_rect.Height());
	HBITMAP hOldBitmap = (HBITMAP)m_EmptyMemDC.SelectObject(&m_BmpBackground);

	::StretchBlt(m_EmptyMemDC, 0, 0, theRt.Width(), theRt.Height(), clientDC.m_hDC, 
	  pt.x, pt.y, theRt.Width(), theRt.Height(), SRCCOPY);

	pDC->BitBlt(0, 0, m_rect.Width(), m_rect.Height(), &m_EmptyMemDC, 0, 0, SRCCOPY);

	m_EmptyMemDC.SelectObject(hOldBitmap);
	m_BmpBackground.DeleteObject();

}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI