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

📄 basegr.cpp

📁 EVC 编的示波器程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体")); 
	CFont *pOldFont = pDC->SelectObject(&m_font);
	pDC->SetTextColor(FontColor);
	DrawText(pDC->GetSafeHdc(),Value,-1,&CRect(Startx-20,Starty,Startx,Starty+10),DT_RIGHT | DT_SINGLELINE);
//	pDC->ExtTextOut(Startx,Starty,ETO_OPAQUE,NULL,Value,NULL);
	pDC->SelectObject(pOldFont);
}
void CBaseGr::DrawYName(CDC* pDC,int Startx,int Starty,CString Value,Align Mode,COLORREF FontColor)
{
	CFont m_font;
	m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   900,                      // nEscapement
		   0,                      // nOrientation
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体")); 
	CFont *pOldFont = pDC->SelectObject(&m_font);

	pDC->SetTextColor(FontColor);
//	DrawText(pDC->GetSafeHdc(),Value,-1,&rcString,DT_RIGHT | DT_SINGLELINE);
	pDC->ExtTextOut(Startx,Starty,ETO_OPAQUE,NULL,Value,NULL);

	pDC->SelectObject(pOldFont);
}
/*
void CBaseGr::DrawXCoordinate(CDC* pDC,int LeftTopx,int LeftTopy,int RightBottomx,int RightBottomy,GraphType Mode,Align AlignMode,BOOL WithDash)
{
	switch(Mode)
	{
	case LINE:
		break;
	case BAR:
		{
			int nXDeta = (RightBottomx-LeftTopx)/(m_Legend.GetSize()+1);
			for(int i=1;i<=m_Legend.GetSize();i++)
			{
				if(m_Legend.GetAt(i-1).Value > YMax)
				{
					Legend LegendTmp = m_Legend.GetAt(i-1); 
					LegendTmp.Value = YMax;
					m_Legend.SetAt(i-1,LegendTmp);
				}
				if(m_Legend.GetAt(i-1).Value < YMin) 
				{
					Legend LegendTmp = m_Legend.GetAt(i-1); 
					LegendTmp.Value = YMin;
					m_Legend.SetAt(i-1,LegendTmp);
				}
				if(WithDash)
					DrawDashLine(pDC,LeftTopx+nXDeta*i,RightBottomy,LeftTopx+nXDeta*i,LeftTopy);
				int Height = ((int)(m_Legend.GetAt(i-1).Value+0.5)-YMin)*(RightBottomy-LeftTopy)/(YMax-YMin);
				DrawRectangle(pDC,LeftTopx+nXDeta*i-nXDeta/2+1,RightBottomy-Height,LeftTopx+nXDeta*i+nXDeta/2-1,RightBottomy,m_Legend.GetAt(i-1).Graph.LineSize,m_Legend.GetAt(i-1).Graph.LineColor,m_Legend.GetAt(i-1).Graph.FillColor);
				switch(AlignMode)
				{
				case LEFT:
				case RIGHT:
				case NONE:
					break;
				case TOP:
					if(nXDeta < 12*m_Legend.GetAt(i-1).Name.GetLength())
						DrawXCoordinateValue(pDC,LeftTopx+nXDeta*i-nXDeta/2+2,RightBottomy-Height-1,m_Legend.GetAt(i-1).Name,HOR);
					else
						DrawXCoordinateValue(pDC,LeftTopx+nXDeta*i-nXDeta/2+2,RightBottomy-Height-15,m_Legend.GetAt(i-1).Name);
					break;
				case BOTTOM:
						DrawXCoordinateValue(pDC,LeftTopx+nXDeta*i-nXDeta/2+2,RightBottomy+15,m_Legend.GetAt(i-1).Name);
					break;
				case ON:
					//if(nXDeta < 12*m_Legend.GetAt(i-1).Name.GetLength())
						DrawXCoordinateValue(pDC,LeftTopx+nXDeta*i-nXDeta/2+2,RightBottomy-5,m_Legend.GetAt(i-1).Name,HOR);
					//else
					//	DrawXCoordinateValue(pDC,LeftTopx+nXDeta*i-nXDeta/2+2,RightBottomy-5,m_Legend.GetAt(i-1).Name);
					break;
				}
			}
			if(XName != _T(""))
				DrawXName(pDC,RightBottomx-12*XName.GetLength(),RightBottomy+15,XName);
		}
		break;
	case PIE:
		break;
	}
}
*/
void CBaseGr::DrawXCoordinateValue(CDC* pDC,int Startx,int Starty,CString Value,Position Pos,COLORREF FontColor)
{
	CFont m_font;
	switch(Pos)
	{
	case VER:
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   0,                      // nEscapement
		   0,                      // nOrientation
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	case HOR:
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   900,                      // nEscapement
		   900,                      // nOrientation
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	}
	CFont *pOldFont = pDC->SelectObject(&m_font);

	pDC->SetTextColor(FontColor);
//	DrawText(pDC->GetSafeHdc(),Value,-1,&rcString,DT_RIGHT | DT_SINGLELINE);
	pDC->ExtTextOut(Startx,Starty,ETO_OPAQUE,NULL,Value,NULL);

	pDC->SelectObject(pOldFont);
}
void CBaseGr::DrawXName(CDC* pDC,int Startx,int Starty,CString Value,Align Mode,COLORREF FontColor)
{
	CFont m_font;
	switch(Mode)
	{
	case BOTTOM:
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   0,                      // nEscapement
		   0,                      // nOrientation
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	case LEFT:
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   900,                      // nEscapement
		   900,                      // nOrientation
			FW_NORMAL,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	}
	CFont *pOldFont = pDC->SelectObject(&m_font);

	pDC->SetTextColor(FontColor);
//	DrawText(pDC->GetSafeHdc(),Value,-1,&rcString,DT_RIGHT | DT_SINGLELINE);
	pDC->ExtTextOut(Startx,Starty,ETO_OPAQUE,NULL,Value,NULL);

	pDC->SelectObject(pOldFont);
}
void CBaseGr::DrawTitle(CDC* pDC,int LeftTopx,int LeftTopy,int RightBottomx,int RightBottomy,Align Mode,COLORREF FontColor)
{
	CFont m_font;
	int Startx,Starty;
	Startx = (RightBottomx-LeftTopx)/2+12*Title.GetLength();
	switch(Mode)
	{
	case ON:
	case NONE:
		break;
	case BOTTOM:
		Startx = LeftTopx+(RightBottomx-LeftTopx)/2-12*Title.GetLength()/2;
		Starty = RightBottomy + 10;
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   0,                      // nEscapement
		   0,                      // nOrientation
			FW_BOLD,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	case TOP:
		Startx = LeftTopx+(RightBottomx-LeftTopx)/2-12*Title.GetLength()/2;
		Starty = LeftTopy - 10;
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   0,                      // nEscapement
		   0,                      // nOrientation
			FW_BOLD,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	case LEFT:
		Startx = LeftTopx-20;
		Starty = LeftTopy+(RightBottomy-LeftTopy)/2-12*Title.GetLength()/2;
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   900,                      // nEscapement
		   900,                      // nOrientation
			FW_BOLD,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	case RIGHT:
		Startx = RightBottomx+20;
		Starty = LeftTopy+(RightBottomy-LeftTopy)/2-12*Title.GetLength()/2;
		m_font.CreateFont(
		  -12,                      // nHeight
		  0,                      // nWidth
		   900,                      // nEscapement
		   900,                      // nOrientation
			FW_BOLD,             // nWeight
			FALSE,                 // bItalic
			FALSE,                 // bUnderline
		   FALSE,                      // cStrikeOut
		OEM_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
		_T("宋体"));
		break;
	}
	CFont *pOldFont = pDC->SelectObject(&m_font);

	pDC->SetTextColor(FontColor);
//	DrawText(pDC->GetSafeHdc(),Value,-1,&rcString,DT_RIGHT | DT_SINGLELINE);
	pDC->ExtTextOut(Startx,Starty,ETO_OPAQUE,NULL,Title,NULL);

	pDC->SelectObject(pOldFont);
}
void CBaseGr::DrawLegend(CDC* pDC,int Startx,int Starty,int Width,Align Mode,COLORREF FontColor)
{
	int i=0;
//	int nWidth=0;
//	if(m_Legend.GetSize()>0)
//		nWidth = m_Legend[0].Name.GetLength();
//	for(i=1;i<m_Legend.GetSize();i++)
//	{
//		if(nWidth < m_Legend[i].Name.GetLength())
//			nWidth = m_Legend[i].Name.GetLength();
//	}
	CFont m_font;
//	m_font.CreateFont(
//		  12,                      // nHeight
//		  0,                      // nWidth
//		   0,                      // nEscapement
//		   0,                      // nOrientation
//			FW_NORMAL,             // nWeight
//			FALSE,                 // bItalic
//			FALSE,                 // bUnderline
//		   FALSE,                      // cStrikeOut
//		OEM_CHARSET,              // nCharSet
//		OUT_DEFAULT_PRECIS,        // nOutPrecision
//		CLIP_DEFAULT_PRECIS,       // nClipPrecision
//		DEFAULT_QUALITY,           // nQuality
//		DEFAULT_PITCH | FF_DONTCARE,  // nPitchAndFamily
//		_T("宋体")); 
	m_font.CreatePointFont(100,_T("宋体"));
	CFont *pOldFont = pDC->SelectObject(&m_font);
	pDC->SetTextColor(FontColor);

	switch(Mode)
	{
	case TOP:
		DrawRectangle(pDC,Startx,Starty,Startx+Width,Starty+15*m_Legend.GetSize()*2);
		for(i=0;i<m_Legend.GetSize();i++)
		{
			pDC->ExtTextOut(Startx+2,Starty+15*i*2+1,ETO_OPAQUE,NULL,m_Legend[i].Name,NULL);
			DrawRectangle(pDC,Startx+2,Starty+15*i*2+15+2,Startx+Width-2,Starty+15*(i+1)*2-2,m_Legend[i].Graph.LineSize,m_Legend[i].Graph.LineColor,m_Legend[i].Graph.FillColor);
		}
		break;
	case BOTTOM:
		DrawRectangle(pDC,Startx,Starty,Startx+Width,Starty+15*m_Legend.GetSize()*2);
		for(i=0;i<m_Legend.GetSize();i++)
		{
			DrawRectangle(pDC,Startx+2,Starty+15*i*2+2,Startx+Width-2,Starty+15*i*2+15-2,m_Legend[i].Graph.LineSize,m_Legend[i].Graph.LineColor,m_Legend[i].Graph.FillColor);
			pDC->ExtTextOut(Startx+2,Starty+15*i*2+15+1,ETO_OPAQUE,NULL,m_Legend[i].Name,NULL);
		}
		break;
	case LEFT:
		break;
	case RIGHT:
		break;
	case ON:
		break;
	case NONE:
		break;
	}
	pDC->SelectObject(pOldFont);
}
void CBaseGr::DrawContent(CDC* pDC,int LeftTopx,int LeftTopy,int RightBottomx,int RightBottomy)
{
}

⌨️ 快捷键说明

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