设为首页 加入收藏

TOP

使用GDI+画仪表表盘(二)
2014-11-23 19:38:18 】 浏览:470
Tags:使用 GDI 仪表

&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


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC++中,CString,in,char,等数.. 下一篇基于VC++实现PE的修改编程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目