您好,登錄后才能下訂單哦!
有時候為了制作透明的控件,特別是外邊緣不規則的控件,可將控件背后的窗口圖片復制到控件中,重繪.這樣控件看起來就象透明的.
.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(); }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。