⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3dbar.cpp

📁 一个简单的c++查找,删除,添加等程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 3DBar.cpp: implementation of the C3DBar class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "3DBar.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
C3DBar::C3DBar()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	m_crChannel = RGB(0, 100, 0);
	UpdateColours();
	CreatePens();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
C3DBar::~C3DBar()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void C3DBar::UpdateColours()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	// Calculates the lighter and darker colors, as well as the shadow colors.
	m_crColorLight = LightenColor(m_crChannel, 51);
	m_crColorLighter = LightenColor(m_crColorLight, 51);
	m_crColorLightest = LightenColor(m_crColorLighter, 51);
	m_crColorDark = DarkenColor(m_crChannel, 51);
	m_crColorDarker = DarkenColor(m_crColorDark, 51);
	m_crDkShadow = ::GetSysColor(COLOR_3DDKSHADOW);
	m_crLiteShadow = ::GetSysColor(COLOR_3DSHADOW);

	// Get a color halfway between COLOR_3DDKSHADOW and COLOR_3DSHADOW
	BYTE byRed3DDkShadow = GetRValue(m_crDkShadow);
	BYTE byRed3DLiteShadow = GetRValue(m_crLiteShadow);
	BYTE byGreen3DDkShadow = GetGValue(m_crDkShadow);
	BYTE byGreen3DLiteShadow = GetGValue(m_crLiteShadow);
	BYTE byBlue3DDkShadow = GetBValue(m_crDkShadow);
	BYTE byBlue3DLiteShadow = GetBValue(m_crLiteShadow);

	m_crShadow = RGB(byRed3DLiteShadow + ((byRed3DDkShadow - byRed3DLiteShadow) >> 1),
						  byGreen3DLiteShadow + ((byGreen3DDkShadow - byGreen3DLiteShadow) >> 1),
						  byBlue3DLiteShadow + ((byBlue3DDkShadow - byBlue3DLiteShadow) >> 1));
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void C3DBar::DrawHorizontal(CDC *pDC, CRect &BarRect)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	if (!BarRect.Width())	return;

	CBrush brLightest(m_crColorLightest);
	pDC->FillRect(BarRect, &brLightest);

	int nLeft = BarRect.left;
	int nTop = BarRect.top;
	int nBottom = BarRect.bottom;
	int nRight = BarRect.right;

	CPen *pOldPen = pDC->SelectObject(&m_penColorLight);
	{
		pDC->MoveTo(nLeft, nBottom - 4);	
		pDC->LineTo(nRight, nBottom - 4);
		pDC->MoveTo(nLeft, nTop + 2);		
		pDC->LineTo(nRight, nTop + 2);
	    pDC->SetPixel(nLeft, nBottom - 3, m_crColorLight);
		pDC->SetPixel(nLeft, nTop + 1, m_crColorLight);
	}

	pDC->SelectObject(&m_penColorLighter);
	{
		pDC->MoveTo(nLeft, nBottom - 5);
		pDC->LineTo(nRight, nBottom - 5);
		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_penColor);
	{
		pDC->MoveTo(nLeft, nBottom - 1);
		pDC->LineTo(nLeft, nTop);
		pDC->LineTo(nLeft , nTop);
		pDC->SetPixel(nLeft, nBottom - 2, m_crChannel);
		pDC->MoveTo(nLeft, nBottom - 3);
		pDC->LineTo(nRight, nBottom - 3);
		pDC->MoveTo(nLeft, nTop + 1);
		pDC->LineTo(nRight, nTop + 1);
	}
	
	pDC->SelectObject(&m_penColorDark);
	{
		pDC->MoveTo(nLeft, nBottom - 2);
		pDC->LineTo(nRight, nBottom - 2);
		pDC->LineTo(nRight, nTop + 1);
		pDC->MoveTo(nLeft, nTop);
		pDC->LineTo(nRight, nTop);
		pDC->SetPixel(nLeft, nBottom - 1, m_crColorDark);
	}

	pDC->SelectObject(&m_penColorDarker);
	{
		pDC->MoveTo(nLeft, nBottom - 1);
		pDC->LineTo(nRight, nBottom - 1);
		pDC->LineTo(nRight, nTop);
	}

	pDC->SelectObject(&m_penShadow);
	{
		pDC->MoveTo(nRight, nTop);
 		pDC->LineTo(nRight, nBottom);
	}
	

	pDC->SelectObject(&m_penLiteShadow);
	{
 		pDC->MoveTo(nRight, nTop);
		pDC->LineTo(nRight, nBottom);
	}


	pDC->SelectObject(pOldPen);
}
//////////////////////
void C3DBar::DrawVertical(CDC*pDC,CRect&BarRect)
////////////////////////////////////
{
	if(!BarRect.Height())return;
	CBrush brLightest(m_crColorLightest);
	pDC->FillRect(BarRect, &brLightest);

	int nLeft = BarRect.left;
	int nTop = BarRect.top;
	int nBottom = BarRect.bottom;
	int nRight = BarRect.right;

	CPen *pOldPen = pDC->SelectObject(&m_penColorLight);
	{
		//pDC->MoveTo(nLeft + 2, nBottom - 4);
		pDC->MoveTo(nLeft+4,nTop);
		//pDC->LineTo(nRight - 2, nBottom - 4);
		pDC->LineTo(nLeft+4,nBottom);
		//pDC->MoveTo(nLeft + 2, nTop + 2);
        pDC->MoveTo(nRight-2,nTop);
		pDC->LineTo(nRight-2,nBottom);
		//pDC->LineTo(nRight - 2, nTop + 2);

		//pDC->SetPixel(nLeft + 1, nBottom - 3, m_crColorLight);
		pDC->SetPixel(nLeft+3,nTop,m_crColorLight);
		//pDC->SetPixel(nLeft + 1, nTop + 1, m_crColorLight);
		pDC->SetPixel(nRight-1,nTop,m_crColorLight);
	}

	pDC->SelectObject(&m_penColorLighter);
	{
		//pDC->MoveTo(nLeft + 2, nBottom - 5);
		pDC->MoveTo(nLeft+5,nTop);
		pDC->LineTo(nLeft+5,nBottom);
		//pDC->LineTo(nRight - 3, nBottom - 5);
		//pDC->LineTo(nRight - 3, nTop + 3);
		pDC->LineTo(nRight-3,nBottom);

		//pDC->LineTo(nLeft + 1, nTop + 3);
		pDC->LineTo(nRight-3,nTop);

		//pDC->SetPixel(nLeft + 1, nBottom - 4, m_crColorLighter);
		//pDC->SetPixel(nLeft + 1, nTop + 2, m_crColorLighter);
		pDC->SetPixel(nLeft+4,nTop,m_crColorLighter);
		pDC->SetPixel(nRight-2,nTop,m_crColorLighter);
	}

	pDC->SelectObject(&m_penColor);
	{
		//pDC->MoveTo(nLeft, nBottom - 1);
		pDC->MoveTo(nLeft+1,nTop);

		//pDC->LineTo(nLeft, nTop);
		pDC->LineTo(nRight,nTop);
		//pDC->LineTo(nLeft + 2, nTop);
		pDC->LineTo(nRight,nTop);
		//pDC->SetPixel(nLeft + 1, nBottom - 2, m_crChannel);
		pDC->SetPixel(nLeft+2,nTop,m_crChannel);
		
		//pDC->MoveTo(nLeft + 2, nBottom - 3);
		pDC->MoveTo(nLeft+3,nTop);

		//pDC->LineTo(nRight - 2, nBottom - 3);
		pDC->LineTo(nLeft+3,nBottom);

		//pDC->MoveTo(nLeft + 2, nTop + 1);
		pDC->MoveTo(nRight-2,nTop);
		//pDC->LineTo(nRight - 1, nTop + 1);
		pDC->LineTo(nRight-2,nBottom);
	}
	
	pDC->SelectObject(&m_penColorDark);
	{
		//pDC->MoveTo(nLeft + 2, nBottom - 2);
		pDC->MoveTo(nLeft+2,nTop);
		//pDC->LineTo(nRight - 2, nBottom - 2);
		pDC->LineTo(nLeft+2,nBottom);
		//pDC->LineTo(nRight - 2, nTop + 1);
		pDC->LineTo(nRight-1,nBottom);
		
		//pDC->MoveTo(nLeft + 2, nTop);
		pDC->MoveTo(nRight,nTop);
		//pDC->LineTo(nRight, nTop);
		pDC->LineTo(nRight,nBottom);

		//pDC->SetPixel(nLeft + 1, nBottom - 1, m_crColorDark);
		pDC->SetPixel(nLeft+1,nTop,m_crColorDark);
	}

	pDC->SelectObject(&m_penColorDarker);
	{
		//pDC->MoveTo(nLeft + 2, nBottom - 1);
		pDC->MoveTo(nLeft+1,nTop);

		//pDC->LineTo(nRight - 1, nBottom - 1);
		pDC->LineTo(nLeft+1,nBottom);

		//pDC->LineTo(nRight - 1, nTop);
		pDC->LineTo(nRight,nBottom);

	}

	pDC->SelectObject(&m_penShadow);
	{
		//pDC->MoveTo(nRight, nTop);
		pDC->MoveTo(nRight,nBottom);

 		//pDC->LineTo(nRight, nBottom);
		pDC->LineTo(nLeft,nBottom);
	}

	pDC->SelectObject(&m_penLiteShadow);
	{
 		//pDC->MoveTo(nRight + 1, nTop);
	    pDC->MoveTo(nRight,nBottom);
		//pDC->LineTo(nRight + 1, nBottom);
		pDC->LineTo(nLeft,nBottom);
	}


	pDC->SelectObject(pOldPen);


}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void C3DBar::DeletePens()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	if (m_penColorLight.m_hObject)		 m_penColorLight.DeleteObject();
	if (m_penColorLighter.m_hObject)	m_penColorLighter.DeleteObject();
	if (m_penColor.m_hObject)			   m_penColor.DeleteObject();
	if (m_penColorDark.m_hObject)		m_penColorDark.DeleteObject();
	if (m_penColorDarker.m_hObject)	   m_penColorDarker.DeleteObject();
	if (m_penDkShadow.m_hObject)	   m_penDkShadow.DeleteObject();
	if (m_penShadow.m_hObject)			m_penShadow.DeleteObject();
	if (m_penLiteShadow.m_hObject)		m_penLiteShadow.DeleteObject();
	if (m_penColorLightest.m_hObject)		 m_penColorLightest.DeleteObject();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
void C3DBar::CreatePens()
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	DeletePens();
	m_penColorLightest.CreatePen(PS_SOLID,1,m_crColorLightest);
	m_penColorLight.CreatePen(PS_SOLID, 1, m_crColorLight);
	m_penColorLighter.CreatePen(PS_SOLID, 1, m_crColorLighter);
	m_penColor.CreatePen(PS_SOLID, 1, m_crChannel);
	m_penColorDark.CreatePen(PS_SOLID, 1, m_crColorDark);
	m_penColorDarker.CreatePen(PS_SOLID, 1, m_crColorDarker);
	m_penDkShadow.CreatePen(PS_SOLID, 1, m_crDkShadow);
	m_penShadow.CreatePen(PS_SOLID, 1, m_crShadow);
	m_penLiteShadow.CreatePen(PS_SOLID, 1, m_crLiteShadow);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Header
COLORREF C3DBar::LightenColor(const COLORREF crColor, BYTE byIncreaseVal)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	BYTE byRed = GetRValue(crColor);
	BYTE byGreen = GetGValue(crColor);
	BYTE byBlue = GetBValue(crColor);

	if ((byRed + byIncreaseVal) <= 255)
		byRed = BYTE(byRed + byIncreaseVal);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -