void CSkinTab::OnPaint() { int i = 0; CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 CRect r; GetClientRect(&r); CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap btScreen; btScreen.CreateCompatibleBitmap(&dc, r.Width(), r.Height()); memDC.SelectObject(&btScreen); btScreen.DeleteObject(); //画背景 memDC.BitBlt(r.left, r.top, r.Width(), r.Height(), &m_memDC, 0, 0, SRCCOPY); //memDC.Rectangle(r); for( i=0;i<m_nTabCount;i++) { CRect rect=m_pTabRect[m_nTabCount-i-1]; rect.top +=22; DrawRangeImage(&m_BitmapBack[0],&memDC,rect); } if(m_nCurDownIndex!=-1) { CRect rect=m_pTabRect[m_nCurDownIndex]; DrawRangeImage(&m_BitmapBack[1],&memDC,rect); } for(i = 0; i < MAX_TEXT_COUNT;i++) { if(strlen(m_TextTitle[i]) > 0) { CRect rect=m_pTabRect[i]; CSize sizeTemp=memDC.GetTextExtent(m_TextTitle[i],_tcslen(m_TextTitle[i])); int xPos = (rect.Width() - sizeTemp.cx )/ 2 + rect.left; int YPos = (rect.Height() - sizeTemp.cy )/ 2 + rect.top + 11 ; if(xPos < 0) xPos = rect.left + 2; if(YPos < 0) YPos = rect.top + 2; memDC.SetBkMode(TRANSPARENT); memDC.TextOut(xPos ,YPos,m_TextTitle[i]); } } dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &memDC, 0, 0, SRCCOPY); memDC.DeleteDC(); // 不为绘图消息调用 CStatic::OnPaint() }
void CUserAddDlg::OnPaint() { CPaintDC dc(this); CDC szMemDC; CRect rcClient; CRect rc; GetClientRect(&rcClient); CBitmap bitmap; bitmap.LoadBitmap(IDB_HEAD); CDC memdc; memdc.CreateCompatibleDC(&dc); BITMAP bit; bitmap.GetBitmap(&bit); memdc.SelectObject(&bitmap); // rcClient.InflateRect(1,1,1,1); dc.StretchBlt(0,0,rcClient.Width(),rcClient.Height(),&memdc,0,0,bit.bmWidth,bit.bmHeight,SRCCOPY); rc = rcClient; rc.bottom = 31; szMemDC.CreateCompatibleDC(&dc); DrawRangeImage(0,&dc,rc);//top rc = rcClient; rc.right = 1; rc.top = rcClient.top - 31; DrawRangeImage(1,&dc,rc);//left rc = rcClient; rc.left = rcClient.right - 5; rc.top = rcClient.top - 31; DrawRangeImage(1,&dc,rc);//right rc = rcClient; rc.top = rcClient.bottom - 5; DrawRangeImage(0,&dc,rc);//bottom COLORREF col = RGB(255,0,255);//修改对话框外形 CRgn rgn; rgn.CreateRoundRectRgn (1, 1, rcClient.Width(), rcClient.Height(),6,6); SetWindowRgn (rgn, TRUE); dc.SetTextColor(RGB(255,255,240)); dc.SetBkMode(TRANSPARENT); dc.TextOut(10,5,_T("用户添加")); }
void CMyBtn::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClient; GetClientRect(&rcClient); //内存画图////////////////////////// CDC szMemDC; szMemDC.CreateCompatibleDC(&dc); CBitmap btScreen; btScreen.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height()); szMemDC.SelectObject(&btScreen); btScreen.DeleteObject(); szMemDC.Rectangle(rcClient); //按妞背景 if(bTrackLeave) //是否离开的标志 { DrawRangeImage(&m_BitmapBack[0],&szMemDC,rcClient); } else { DrawRangeImage(&m_BitmapBack[1],&szMemDC,rcClient); } if(m_btnText.GetLength() > 0) { CSize sz = szMemDC.GetTextExtent(m_btnText); long nLeft = (rcClient.Width() - sz.cx)/2; long nTop = (rcClient.Height() - sz.cy)/2; szMemDC.SetBkMode(TRANSPARENT); szMemDC.SetTextColor(RGB(255,255,255)); szMemDC.TextOut(nLeft,nTop,m_btnText,m_btnText.GetLength()); } //创建不规则窗体 //ChangeWindowRgn(&szMemDC); dc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &szMemDC, 0, 0, SRCCOPY); szMemDC.DeleteDC(); }
void CRealVideoDlg::OnPaint() { CPaintDC dc(this); // device context for painting CRect rcClient,rcBtn,rcScroll,rcPic; GetClientRect(&rcClient); //内存画图////////////////////////// CDC szMemDC; szMemDC.CreateCompatibleDC(&dc); CBitmap btScreen; btScreen.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height()); szMemDC.SelectObject(&btScreen); btScreen.DeleteObject(); szMemDC.Rectangle(rcClient); // szMemDC.Draw3dRect(&rcClient,RGB(0,0,0),RGB(221,228,238)); szMemDC.FillSolidRect( &rcClient ,RGB(221,228,238));//RGB( 150,150,150)); CRect szRc = rcClient; szRc.top = rcClient.top + 25; szRc.left = rcClient.left + 20; szRc.right = szRc.left + 180; szRc.bottom = szRc.top + 255; DrawRangeImage(&m_BitmapBack[0],&szMemDC,szRc); szRc.top = rcClient.top + 255 + 25 + 15; szRc.left = rcClient.left; szRc.right = szRc.left + 209; szRc.bottom = szRc.top + 40; DrawRangeImage(&m_BitmapBack[1],&szMemDC,szRc); szRc.top = rcClient.top + 255 + 25 + 15 + 40; szRc.left = rcClient.left; szRc.right = szRc.left + 209; szRc.bottom = szRc.top + 45; DrawRangeImage(&m_BitmapBack[2],&szMemDC,szRc); dc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &szMemDC, 0, 0, SRCCOPY); szMemDC.DeleteDC(); }