void GraphicsMisc::DrawGradient(CDC* pDC, LPCRECT pRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz, int nBorder) { TRIVERTEX vert[2]; GRADIENT_RECT gRect; vert[0] .x = pRect->left; vert[0] .y = pRect->top; vert[0] .Red = MAKEWORD(0, GetRValue(crFrom)); vert[0] .Green = MAKEWORD(0, GetGValue(crFrom)); vert[0] .Blue = MAKEWORD(0, GetBValue(crFrom)); vert[0] .Alpha = 0x0000; vert[1] .x = pRect->right; vert[1] .y = pRect->bottom; vert[1] .Red = MAKEWORD(0, GetRValue(crTo)); vert[1] .Green = MAKEWORD(0, GetGValue(crTo)); vert[1] .Blue = MAKEWORD(0, GetBValue(crTo)); vert[1] .Alpha = 0x0000; gRect.UpperLeft = 0; gRect.LowerRight = 1; GradientFill(pDC->GetSafeHdc(), vert, 2, &gRect, 1, bHorz ? GRADIENT_FILL_RECT_H : GRADIENT_FILL_RECT_V); if (nBorder >= 0) { // draw a border in from the edge CRect rBorder(pRect); rBorder.DeflateRect(nBorder, nBorder); DrawRect(pDC, rBorder, CLR_NONE, crFrom); } }
void GraphicsMisc::DrawGlass(CDC* pDC, LPCRECT pRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz, int nBorder) { CRect rBarFrom(pRect), rBarTo(pRect); if (bHorz) { rBarFrom.right = rBarFrom.left + (rBarFrom.Width() * 2 / 5); rBarTo.left = rBarFrom.right; } else // vert { rBarFrom.bottom = rBarFrom.top + (rBarFrom.Height() * 2 / 5); rBarTo.top = rBarFrom.bottom; } DrawGradient(pDC, rBarFrom, Lighter(crFrom, 0.2), crFrom, bHorz, -1); DrawGradient(pDC, rBarTo, crTo, Lighter(crTo, 0.2), bHorz, -1); if (nBorder >= 0) { // draw a border in from the edge CRect rBorder(pRect); rBorder.DeflateRect(nBorder, nBorder); DrawRect(pDC, rBorder, CLR_NONE, crFrom); } }
void ExtTabControl::DrawMainBorder(LPDRAWITEMSTRUCT lpdis) { // This ends up being a thin line under stuff CRect rBorder(lpdis->rcItem); CDC* pDC = CDC::FromHandle(lpdis->hDC); //pDC->FillSolidRect(&rBorder, RGB(255, 128, 50)); pDC->FillSolidRect(&rBorder, g_PaintManager->GetColor(COLOR_3DFACE)); }
void GraphicsMisc::DrawGlassWithGradient(CDC* pDC, LPCRECT pRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz, int nBorder) { // draw the glass first CRect rBarFrom(pRect), rBarTo(pRect); if (bHorz) { rBarFrom.right = rBarFrom.left + (rBarFrom.Width() * 2 / 10); rBarTo.left = rBarTo.right - (rBarTo.Width() * 4 / 10); } else // vert { rBarFrom.bottom = rBarFrom.top + (rBarFrom.Height() * 2 / 10); rBarTo.top = rBarTo.bottom - (rBarTo.Height() * 4 / 10); } pDC->FillSolidRect(rBarFrom, crFrom); pDC->FillSolidRect(rBarTo, crTo); // then the gradient CRect rGrad(pRect); if (bHorz) { rGrad.left = rBarFrom.right; rGrad.right = rBarTo.left; } else { rGrad.top = rBarFrom.bottom; rGrad.bottom = rBarTo.top; } DrawGradient(pDC, rGrad, crFrom, crTo, bHorz, -1); // no border if (nBorder >= 0) { // draw a border in from the edge CRect rBorder(pRect); rBorder.DeflateRect(nBorder, nBorder); DrawRect(pDC, rBorder, CLR_NONE, crFrom); } }
void CMDITabsDialogBar::DrawMainBorder(LPDRAWITEMSTRUCT lpdis) { CRect rBorder(lpdis->rcItem); CDC* pDC = CDC::FromHandle(lpdis->hDC); pDC->FillSolidRect(&rBorder, g_PaintManager->GetColor(COLOR_BTNFACE)); }