📄 basegr.cpp
字号:
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 + -