//******************************************************************************* void CBCGPKnob::OnDrawTickMarkTextLabel(CBCGPGraphicsManager* pGM, const CBCGPTextFormat& tf, const CBCGPRect& rectText, const CString& strLabel, double dblVal, int nScale, const CBCGPBrush& br) { if (m_sizeIcon.cx == 0) { CBCGPCircularGaugeImpl::OnDrawTickMarkTextLabel(pGM, tf, rectText, strLabel, dblVal, nScale, br); return; } if (m_sizeIcon.cy == 0) { m_sizeIcon.cy = pGM->GetImageSize(m_Icons).cy; } CBCGPSize sizeIcon(m_sizeIcon.cx * m_sizeScaleRatio.cx, m_sizeIcon.cy * m_sizeScaleRatio.cy); double cx = 0.; double cy = 0.; double angle = 0.; if (ValueToAngle(dblVal, angle, nScale)) { cx = sizeIcon.cx * cos(bcg_deg2rad(angle)) / 2; } CBCGPPoint ptImage( rectText.left + max(0., .5 * (rectText.Width() - sizeIcon.cx)) + cx, rectText.top + max(0., .5 * (rectText.Height() - sizeIcon.cy)) + cy); pGM->DrawImage(m_Icons, ptImage, sizeIcon, 1., CBCGPImage::BCGP_IMAGE_INTERPOLATION_MODE_LINEAR, CBCGPRect(CBCGPPoint(m_sizeIcon.cx * m_nCurrLabelIndex, 0), m_sizeIcon)); }
void CLibraryTipCtrl::DrawThumb(CDC* pDC, CRect& rcThumb) { pDC->Draw3dRect( &rcThumb, CoolInterface.m_crTipBorder, CoolInterface.m_crTipBorder ); rcThumb.DeflateRect( 1, 1 ); if ( m_bmThumb.m_hObject ) { CDC dcMem; dcMem.CreateCompatibleDC( pDC ); CBitmap* pOld = (CBitmap*)dcMem.SelectObject( &m_bmThumb ); CPoint ptImage( ( rcThumb.left + rcThumb.right ) / 2 - m_szThumb.cx / 2, ( rcThumb.top + rcThumb.bottom ) / 2 - m_szThumb.cy / 2 ); pDC->BitBlt( ptImage.x, ptImage.y, m_szThumb.cx, m_szThumb.cy, &dcMem, 0, 0, SRCCOPY ); pDC->ExcludeClipRect( ptImage.x, ptImage.y, ptImage.x + m_szThumb.cx, ptImage.y + m_szThumb.cy ); dcMem.SelectObject( pOld ); pDC->FillSolidRect( &rcThumb, m_crLight ); } else { CPoint pt( ( rcThumb.left + rcThumb.right ) / 2 - 24, ( rcThumb.top + rcThumb.bottom ) / 2 - 24 ); ImageList_DrawEx( ShellIcons.GetHandle( 48 ), m_nIcon, pDC->GetSafeHdc(), pt.x, pt.y, 48, 48, m_crLight, CLR_NONE, ILD_NORMAL ); pDC->ExcludeClipRect( pt.x, pt.y, pt.x + 48, pt.y + 48 ); pDC->FillSolidRect( &rcThumb, m_crLight ); } }
void CCoolBarItem::Paint(CDC* pDC, CRect& rc, BOOL bDown, BOOL bHot, BOOL bMenuGray, BOOL bTransparent) { COLORREF crBackground; if ( m_nID == ID_SEPARATOR ) { if ( ! bTransparent ) pDC->FillSolidRect( rc.left, rc.top, 3, rc.Height(), CoolInterface.m_crMidtone ); pDC->Draw3dRect( rc.left + 3, rc.top, 1, rc.Height(), CoolInterface.m_crDisabled, CoolInterface.m_crDisabled ); if ( ! bTransparent ) pDC->FillSolidRect( rc.left + 4, rc.top, 3, rc.Height(), CoolInterface.m_crMidtone ); return; } if ( m_nCtrlID ) { for ( int nShrink = rc.Height() - m_nCtrlHeight ; nShrink > 0 ; nShrink -= 2 ) { if ( ! bTransparent ) pDC->Draw3dRect( &rc, CoolInterface.m_crMidtone, CoolInterface.m_crMidtone ); rc.DeflateRect( 0, 1 ); } rc.DeflateRect( 1, 0 ); } else { if ( ! bTransparent ) pDC->Draw3dRect( &rc, CoolInterface.m_crMidtone, CoolInterface.m_crMidtone ); rc.DeflateRect( 1, 1 ); } // if ( ( m_bEnabled || m_nCtrlID ) && ( bHot || bDown || m_bChecked ) ) if ( m_bEnabled && ( bHot || bDown || m_bChecked ) ) { if ( bMenuGray && bDown ) { pDC->Draw3dRect( &rc, CoolInterface.m_crDisabled, CoolInterface.m_crDisabled ); } else { pDC->Draw3dRect( &rc, CoolInterface.m_crBorder, CoolInterface.m_crBorder ); } rc.DeflateRect( 1, 1 ); if ( bMenuGray && bDown ) { crBackground = CoolInterface.m_crBackNormal; } else if ( m_bChecked ) { crBackground = bHot ? CoolInterface.m_crBackCheckSel : CoolInterface.m_crBackCheck; } else { crBackground = bDown && bHot ? CoolInterface.m_crBackCheckSel : CoolInterface.m_crBackSel; } } else { if ( bTransparent ) { crBackground = CLR_NONE; } else { crBackground = CoolInterface.m_crMidtone; pDC->Draw3dRect( &rc, crBackground, crBackground ); } rc.DeflateRect( 1, 1 ); } if ( m_nCtrlID ) { if ( m_nCtrlHeight == CONTROL_HEIGHT ) { pDC->Draw3dRect( &rc, CoolInterface.m_crWindow, CoolInterface.m_crWindow ); rc.DeflateRect( 1, 1 ); } return; } if ( crBackground == CLR_NONE ) { pDC->SetBkMode( TRANSPARENT ); } else { pDC->SetBkMode( OPAQUE ); pDC->SetBkColor( crBackground ); } if ( m_sText.GetLength() ) { if ( m_crText != 0xFFFFFFFF ) pDC->SetTextColor( m_crText ); else if ( ! m_bEnabled ) pDC->SetTextColor( CoolInterface.m_crDisabled ); else if ( ( bHot || bDown || m_bChecked ) && ( ! bMenuGray || ! bDown ) ) pDC->SetTextColor( CoolInterface.m_crCmdTextSel ); else pDC->SetTextColor( CoolInterface.m_crCmdText ); rc.left += ( m_nImage >= 0 ) ? 20 : 1; int nY = ( rc.top + rc.bottom ) / 2 - pDC->GetTextExtent( m_sText ).cy / 2 - 1; if ( crBackground == CLR_NONE ) pDC->ExtTextOut( rc.left + 2, nY, ETO_CLIPPED, &rc, m_sText, NULL ); else pDC->ExtTextOut( rc.left + 2, nY, ETO_CLIPPED|ETO_OPAQUE, &rc, m_sText, NULL ); rc.right = rc.left; rc.left -= ( m_nImage >= 0 ) ? 20 : 1; } if ( m_nImage >= 0 ) { CPoint ptImage( rc.left + 3, ( rc.top + rc.bottom ) / 2 - 8 ); if ( ! m_bEnabled ) { ImageList_DrawEx( CoolInterface.m_pImages.GetSafeHandle(), m_nImage, pDC->GetSafeHdc(), ptImage.x, ptImage.y, 0, 0, crBackground, CoolInterface.m_crShadow, ILD_BLEND50 ); pDC->ExcludeClipRect( ptImage.x, ptImage.y, ptImage.x + 16, ptImage.y + 16 ); } else if ( m_bChecked ) { ImageList_DrawEx( CoolInterface.m_pImages.GetSafeHandle(), m_nImage, pDC->GetSafeHdc(), ptImage.x, ptImage.y, 0, 0, crBackground, CLR_NONE, ILD_NORMAL ); pDC->ExcludeClipRect( ptImage.x, ptImage.y, ptImage.x + 16, ptImage.y + 16 ); } else if ( ( bHot && ! bDown ) || ( bDown && ! bHot ) ) { ptImage.Offset( 1, 1 ); pDC->SetTextColor( CoolInterface.m_crShadow ); ImageList_DrawEx( CoolInterface.m_pImages.GetSafeHandle(), m_nImage, pDC->GetSafeHdc(), ptImage.x, ptImage.y, 0, 0, crBackground, CLR_NONE, ILD_MASK ); ptImage.Offset( -2, -2 ); if ( crBackground != CLR_NONE ) { pDC->FillSolidRect( ptImage.x, ptImage.y, 18, 2, crBackground ); pDC->FillSolidRect( ptImage.x, ptImage.y + 2, 2, 16, crBackground ); } ImageList_DrawEx( CoolInterface.m_pImages.GetSafeHandle(), m_nImage, pDC->GetSafeHdc(), ptImage.x, ptImage.y, 0, 0, CLR_NONE, CLR_NONE, ILD_NORMAL ); pDC->ExcludeClipRect( ptImage.x, ptImage.y, ptImage.x + 18, ptImage.y + 18 ); } else { ImageList_DrawEx( CoolInterface.m_pImages.GetSafeHandle(), m_nImage, pDC->GetSafeHdc(), ptImage.x, ptImage.y, 0, 0, crBackground, CoolInterface.m_crBackNormal, bDown ? ILD_NORMAL : ILD_BLEND25 ); pDC->ExcludeClipRect( ptImage.x, ptImage.y, ptImage.x + 16, ptImage.y + 16 ); } } if ( crBackground != CLR_NONE ) pDC->FillSolidRect( &rc, crBackground ); }