&format,
&Gdiplus::SolidBrush(ScaleColor)
);
Gdiplus::Point p2,p3;
int nGap=5;
p3.X=ptCenter.X+(nRadius[0]+0)*cos(f0);
p3.Y=ptCenter.Y-(nRadius[0]+0)*sin(f0);
p2.X=ptCenter.X+(nRadius[0]-nGap)*cos(f0);
p2.Y=ptCenter.Y-(nRadius[0]-nGap)*sin(f0);
pGraph->DrawLine(&LinePen,p2,p3);
}
}
else
{
p0.X=ptCenter.X+(nRadius[1]+nShortScal)*cos(f0);
p0.Y=ptCenter.Y-(nRadius[1]+nShortScal)*sin(f0);
}
pGraph->DrawLine(&LinePen,p0,p1);
}
CString strDataFont=_T("Times New Roman");
int DataSize=15;
Gdiplus::Color DataColor=Gdiplus::Color::Red;
// 单位
Gdiplus::RectF UnitRc;
CSize size=CGraphCurveView::GetOutPutTextSize(pGraph,strUnit,strDataFont,DataSize);
UnitRc.X=ptCenter.X-size.cx/2;
UnitRc.Y=ptCenter.Y-(nRadius[0]-nRadius[1]+nRadius[2]+size.cy/2);
UnitRc.Width=size.cx;
UnitRc.Height=size.cy;
pGraph->DrawString(
strUnit,
-1,
&Gdiplus::Font(strDataFont,DataSize),
UnitRc,
&format,
&Gdiplus::SolidBrush(DataColor)
);
// 数据
CString strData;
strData.Format(_T("%.0f"),fValue);
size=CGraphCurveView::GetOutPutTextSize(pGraph,strData,strDataFont,DataSize);
Gdiplus::RectF DataRc;
DataRc.X=ptCenter.X-size.cx/2;
DataRc.Y=ptCenter.Y-(nRadius[2]-nLongScal);
DataRc.Width=size.cx;
DataRc.Height=size.cy;
pGraph->DrawString(
strData,
-1,
&Gdiplus::Font(strDataFont,DataSize),
DataRc,
&format,
&Gdiplus::SolidBrush(DataColor)
);
// 画指针
Gdiplus::Pen PointPen(Gdiplus::Color::Green,2);
Gdiplus::Point p0,p1;
double f0=((180-fRadian)/2+fRadian/(fMax-fMin)*(-fValue+fMax))/180*PI;
p0.X=ptCenter.X+(nRadius[2]*cos(f0));
p0.Y=ptCenter.Y-(nRadius[2]*sin(f0));
p1.X=ptCenter.X+((nRadius[1]+nShortScal/2)*cos(f0));
p1.Y=ptCenter.Y-((nRadius[1]+nShortScal/2)*sin(f0));
pGraph->DrawLine(&PointPen,p0,p1);
delete pGraph;
return pImage;
}
效果:
作者 rattlerattle
|