溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

復(fù)制窗口指定位置的圖片

發(fā)布時間:2020-07-29 06:16:25 來源:網(wǎng)絡(luò) 閱讀:395 作者:Chinayu2014 欄目:編程語言

有時候為了制作透明的控件,特別是外邊緣不規(guī)則的控件,可將控件背后的窗口圖片復(fù)制到控件中,重繪.這樣控件看起來就象透明的.

.h文件中聲明變量
CMemoryDC  m_EmptyMemDC;//空白內(nèi)存DC(另外封裝的CDC的類)
CBitmap	   m_BmpBackground;
void CLabel::CopyBackground(CDC * pDC)
{
	CRect theRt;//獲取控件大小(此處是自定義的控件,在控件內(nèi)部執(zhí)行)
	GetWindowRect(&theRt);

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

	CClientDC  clientDC(this->GetParent());
   //創(chuàng)建兼容位圖
	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問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI