📄 3dbar.cpp
字号:
if ((byGreen + byIncreaseVal) <= 255)
byGreen = BYTE(byGreen + byIncreaseVal);
if ((byBlue + byIncreaseVal) <= 255)
byBlue = BYTE(byBlue + byIncreaseVal);
return RGB(byRed, byGreen, byBlue);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
COLORREF C3DBar::DarkenColor(const COLORREF crColor, BYTE byReduceVal)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
BYTE byRed = GetRValue(crColor);
BYTE byGreen = GetGValue(crColor);
BYTE byBlue = GetBValue(crColor);
if (byRed >= byReduceVal)
byRed = BYTE(byRed - byReduceVal);
if (byGreen >= byReduceVal)
byGreen = BYTE(byGreen - byReduceVal);
if (byBlue >= byReduceVal)
byBlue = BYTE(byBlue - byReduceVal);
return RGB(byRed, byGreen, byBlue);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void C3DBar::SetBarColour(COLORREF cr)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
m_crChannel = cr;
UpdateColours();
CreatePens();
}
//自己定义
void C3DBar::DrawTop(CDC*pDC,CRect&topRect)
{
if (!topRect.Width())return;
CRect rect;
rect.left=topRect.left+topRect.Height();
rect.right=topRect.right-topRect.Height();
rect.top=topRect.top;
rect.bottom=topRect.bottom;
int nLeft = rect.left;
int nTop = rect.top;
int nBottom = rect.bottom;
int nRight = rect.right;
CPen *pOldPen = pDC->SelectObject(&m_penColorLightest);
{
for(int n=0;n<topRect.Height()+1;n++)
{
pDC->MoveTo(nLeft-n,nBottom-n);
pDC->LineTo(nRight+n,nBottom-n);
}
}
pDC->SelectObject(&m_penColorDarker);
{
pDC->MoveTo(nLeft-1,nBottom-1);
pDC->LineTo(nRight+1,nBottom-1);
}
pDC->SelectObject(&m_penColorDark);
{
pDC->MoveTo(nLeft-2,nBottom-2);
pDC->LineTo(nRight+2,nBottom-2);
}
pDC->SelectObject(&m_penColor);
{
pDC->MoveTo(nLeft-3,nBottom-3);
pDC->LineTo(nRight+3,nBottom-3);
}
pDC->SelectObject(&m_penColorLight);
{
pDC->MoveTo(nLeft-4,nBottom-4);
pDC->LineTo(nRight+4,nBottom-4);
}
pDC->SelectObject(&m_penColorLighter);
{
pDC->MoveTo(nLeft-5,nBottom-5);
pDC->LineTo(nRight+5,nBottom-5);
}
pDC->SelectObject(pOldPen);
}
void C3DBar::DrawBottom(CDC*pDC,CRect&bottomRect)
{
if(!bottomRect.Width())return;
CRect rect;
rect.left=bottomRect.left+bottomRect.Height();
rect.right=bottomRect.right-bottomRect.Height();
rect.top=bottomRect.top;
rect.bottom=bottomRect.bottom;
int nLeft = rect.left;
int nTop = rect.top;
int nBottom = rect.bottom;
int nRight = rect.right;
CPen *pOldPen = pDC->SelectObject(&m_penColorLightest);
{
for(int n=0;n<bottomRect.Height()+1;n++)
{
pDC->MoveTo(nLeft-n,nTop+n);
pDC->LineTo(nRight+n,nTop+n);
}
}
pDC->SelectObject(&m_penColorDarker);
{
pDC->MoveTo(nLeft-bottomRect.Height()+1, nBottom - 1);
pDC->LineTo(nRight+bottomRect.Height()-1, nBottom - 1);
//pDC->LineTo(nRight, nTop + 3);
//pDC->LineTo(nLeft, nTop + 3);
//pDC->SetPixel(nLeft, nBottom - 4, m_crColorLighter);
//pDC->SetPixel(nLeft, nTop + 2, m_crColorLighter);
}
pDC->SelectObject(&m_penColorDark);
{
pDC->MoveTo(nLeft-bottomRect.Height()+2, nBottom-2);
pDC->LineTo(nRight+bottomRect.Height()-2, nBottom-2);
//pDC->MoveTo(nLeft, nTop );
//pDC->LineTo(nRight, nTop + 2);
///pDC->SetPixel(nLeft, nBottom - 3, m_crColorLight);
//pDC->SetPixel(nLeft, nTop + 1, m_crColorLight);
}
pDC->SelectObject(&m_penColor);
{
//pDC->MoveTo(nLeft, nBottom - 1);
//pDC->LineTo(nLeft, nTop);
//pDC->LineTo(nLeft , nTop);
//pDC->SetPixel(nLeft, nBottom - 2, m_crChannel);
pDC->MoveTo(nLeft-bottomRect.Height()+3, nBottom - 3);
pDC->LineTo(nRight+bottomRect.Height()-3, nBottom - 3);
//pDC->MoveTo(nLeft, nTop + 1);
//pDC->LineTo(nRight, nTop + 1);
}
pDC->SelectObject(&m_penColorLight);
{
pDC->MoveTo(nLeft-bottomRect.Height()+4, nBottom - 4);
pDC->LineTo(nRight+bottomRect.Height()-4, nBottom - 4);
//pDC->LineTo(nRight, nTop + 1);
//pDC->MoveTo(nLeft, nTop);
//pDC->LineTo(nRight, nTop);
//pDC->SetPixel(nLeft, nBottom - 1, m_crColorDark);
}
pDC->SelectObject(&m_penColorLighter);
{
pDC->MoveTo(nLeft-bottomRect.Height()+5, nBottom - 5);
pDC->LineTo(nRight+bottomRect.Height()-5, nBottom - 5);
}
pDC->SelectObject(&m_penShadow);
{
pDC->MoveTo(nLeft, nTop);
pDC->LineTo(nRight, nTop);
}
pDC->SelectObject(&m_penLiteShadow);
{
pDC->MoveTo(nLeft, nTop);
pDC->LineTo(nRight, nTop);
}
pDC->SelectObject(pOldPen);
}
void C3DBar::DrawLeft(CDC*pDC,CRect&leftRect)
{
if(!leftRect.Height())return;
CRect rect;
rect.left=leftRect.left;
rect.right=leftRect.right;
rect.top=leftRect.top+leftRect.Width();
rect.bottom=leftRect.bottom-leftRect.Width();
int nLeft = rect.left;
int nTop = rect.top;
int nBottom = rect.bottom;
int nRight = rect.right;
CPen *pOldPen = pDC->SelectObject(&m_penColorLightest);
{
for(int n=0;n<leftRect.Width()+1;n++)
{
pDC->MoveTo(nRight-n,nTop-n);
pDC->LineTo(nRight-n,nBottom+n);
}
}
pDC->SelectObject(&m_penColorDarker);
{
pDC->MoveTo(nRight-1,nTop-1);
pDC->LineTo(nRight-1,nBottom+1);
}
pDC->SelectObject(&m_penColorDark);
{
pDC->MoveTo(nRight-2,nTop-2);
pDC->LineTo(nRight-2,nBottom+2);
}
pDC->SelectObject(&m_penColor);
{
pDC->MoveTo(nRight-3,nTop-3);
pDC->LineTo(nRight-3,nBottom+3);
}
pDC->SelectObject(&m_penColorLight);
{
pDC->MoveTo(nRight-4,nTop-4);
pDC->LineTo(nRight-4,nBottom+4);
}
pDC->SelectObject(&m_penColorLighter);
{
pDC->MoveTo(nRight-5,nTop-5);
pDC->LineTo(nRight-5,nBottom+5);
}
pDC->SelectObject(&m_penShadow);
{
//pDC->MoveTo(nLeft,nTop-leftRect.Width());
//pDC->LineTo(nLeft,nBottom+leftRect.Width());
pDC->MoveTo(nRight,nTop);
pDC->LineTo(nRight,nBottom);
}
pDC->SelectObject(&m_penLiteShadow);
{
//pDC->MoveTo(nLeft,nTop-leftRect.Width());
//pDC->LineTo(nLeft,nBottom+leftRect.Width());
pDC->MoveTo(nRight,nTop);
pDC->LineTo(nRight,nBottom);
}
pDC->SelectObject(pOldPen);
}
void C3DBar::DrawRight(CDC*pDC,CRect&rightRect)
{
if(!rightRect.Height())return;
CRect rect;
rect.left=rightRect.left;
rect.right=rightRect.right;
rect.top=rightRect.top+rightRect.Width();
rect.bottom=rightRect.bottom-rightRect.Width();
int nLeft = rect.left;
int nTop = rect.top;
int nBottom = rect.bottom;
int nRight = rect.right;
CPen *pOldPen = pDC->SelectObject(&m_penColorLightest);
{
for(int n=0;n<rightRect.Width()+1;n++)
{
pDC->MoveTo(nLeft+n,nTop-n);
pDC->LineTo(nLeft+n,nBottom+n+1);
}
}
pDC->SelectObject(&m_penColorDarker);
{
pDC->MoveTo(nRight-1,nTop-rightRect.Width()+1);
pDC->LineTo(nRight-1,nBottom+rightRect.Width());
}
pDC->SelectObject(&m_penColorDark);
{
pDC->MoveTo(nRight-2,nTop-rightRect.Width()+2);
pDC->LineTo(nRight-2,nBottom+rightRect.Width()-1);
}
pDC->SelectObject(&m_penColor);
{
pDC->MoveTo(nRight-3,nTop-rightRect.Width()+3);
pDC->LineTo(nRight-3,nBottom+rightRect.Width()-2);
}
pDC->SelectObject(&m_penColorLight);
{
pDC->MoveTo(nRight-4,nTop-rightRect.Width()+4);
pDC->LineTo(nRight-4,nBottom+rightRect.Width()-3);
}
pDC->SelectObject(&m_penColorLighter);
{
pDC->MoveTo(nRight-5,nTop-rightRect.Width()+5);
pDC->LineTo(nRight-5,nBottom+rightRect.Width()-4);
}
pDC->SelectObject(&m_penShadow);
{
pDC->MoveTo(rightRect.right,rightRect.top);
pDC->LineTo(rightRect.right,rightRect.bottom);
pDC->MoveTo(rightRect.left,nTop);
pDC->LineTo(rightRect.left,nBottom);
}
pDC->SelectObject(&m_penLiteShadow);
{
pDC->MoveTo(rightRect.right,rightRect.top);
pDC->LineTo(rightRect.right,rightRect.bottom);
pDC->MoveTo(rightRect.left,nTop);
pDC->LineTo(rightRect.left,nBottom);
}
pDC->SelectObject(pOldPen);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -