如何在C#的WinForm中制作饼状图和柱状图

如何在C#的WinForm中制作饼状图和柱状图,第1张

如何在C#的WinForm中制作饼状图和柱状图,第2张

当我们的软件需要各种饼状图和直方图来表示数据的时候,我们可能会想到在Offices中使用图形控件或者第三方控件,但是现在大部分第三方控件都需要注册,一些免费的控件会被开发者标记出来。但是对于使用Offices的图形控件,在程序中无法很好的控制,易用性较低,所以这里我给出一个在C#中使用GDI+将饼状图和直方图与数据库连接起来显示数据的方法。
使用系统;
使用系统。木卫一;//用于使用系统的文件访问
。数据;//用于使用System进行数据访问
。绘图;//提供使用System绘制GDI+图形
的基本功能。绘图。文本;//提供使用system.drawing.drawing2d绘制GDI+图形
的高级功能;//使用系统提供高级2D和矢量图形功能
。画画。成像;//提供绘制GDI+ graphics
namespace基础层
{
public class饼图
{
{
}
//Render是图形标题、图形副标题、图形宽度、图形长度、饼图的数据集以及要表示的饼图的数据集
public image Render(string title、string subtitle、int width、int height、DataSet chartData、int DataLine)[/中
const int PIE _ DIAMETER = 200;
数据表dt =图表数据。表[0];

//通过输入参数得到饼状图中的总基数
float sumData = 0;
foreach(数据行dr in dt。rows)
{
sum data+= Convert。to single(dr[DataLine]);
}
/生成一个图像对象,从而生成一个图形对象
bitmap BM = new bitmap (width,height);
Graphics g =图形。from image(BM);
//设置对象G的属性
G . scale transform((convert . to single(width))/side _ length,(convert . to single(height))/side _ length);
g . smoothing mode = smoothing mode。违约;
g . TextRenderingHint = TextRenderingHint。抗锯齿;

//画布和边缘的设置
g.Clear(Color。白色);
g.DrawRectangle(钢笔。黑色,0,0,SIDE_LENGTH-1,SIDE _ LENGTH-1);
//饼图标题
G .抽绳(标题,新字体(“Tahoma”,14),画笔。黑色,新点f (5,5));
//饼图图例
G .抽绳(副标题,新字体(“Tahoma”,12),画笔。黑色,新点f (7,35));
//画个蛋糕图
float curAngle = 0;
float total angle = 0;
for(int I = 0;i {
curAngle = Convert。ToSingle(dt。rows[I][DataLine])/sumData * 360;

g.FillPie(新SolidBrush(ChartUtil。GetChartItemColor(i)),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);g.DrawPie(钢笔。黑色,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
total angle+= curAngle;
}
/绘制图例框及其文本
G .绘制矩形(钢笔。黑色,200,300,199,99);
g.DrawString("图表描述",新字体(" Tahoma ",12,字体样式。粗体),画笔。黑色,新点f (200,300));

//绘制图例项
pointf box origin = new pointf(210,330);
PointF text origin = new PointF(235,326);
浮动百分比= 0;
for(int I = 0;i {
g.FillRectangle(新的SolidBrush(ChartUtil。GetChartItemColor(i)),boxOrigin。x,boxOrigin。y,20,10);
g.DrawRectangle(钢笔。黑色,boxOrigin。x,boxOrigin。y,20,10);
percent =转换。ToSingle(dt。rows[I][DataLine])/sumData * 100;
g .拉带(dt。第[i][1]行。ToString() + " - " + dt。行[i][0]。ToString() + " (" +百分比。ToString("0") +")"、新字体(" Tahoma ",10)、画笔。黑色,text origin);
boxOrigin。y+= 15;
textOrigin。y+= 15;
}
/回收资源
g . Dispose();
return(Image)BM;

}
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 如何在C#的WinForm中制作饼状图和柱状图

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情