实现chart柱状图的方法:
using System;using SystemIO;//用于文件存取
using SystemData;//用于数据访问
using SystemDrawing;//提供画GDI+图形的基本功能
using SystemDrawingText;//提供画GDI+图形的高级功能
using SystemDrawingDrawing2D;//提供画高级二维,矢量图形功能
using SystemDrawingImaging;//提供画GDI+图形的高级功能
namespace BaseLayer
{
public class PieChart
{
public PieChart()
{
}
//Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集要表示出来的数据
public Image Render(string title, string subTitle, int width, int height, DataSet chartData,int DataLine)
{
const int SIDE_LENGTH = 400;
const int PIE_DIAMETER = 200;
DataTable dt = chartDataTables[0];
//通过输入参数,取得饼图中的总基数
float sumData = 0;
foreach(DataRow dr in dtRows)
{
sumData += ConvertToSingle(dr[DataLine]);
}
//产生一个image对象,并由此产生一个Graphics对象
Bitmap bm = new Bitmap(width,height);
Graphics g = GraphicsFromImage(bm);
//设置对象g的属性
gScaleTransform((ConvertToSingle(width))/SIDE_LENGTH,(ConvertToSingle(height))/SIDE_LENGTH);
gSmoothingMode = SmoothingModeDefault;
gTextRenderingHint = TextRenderingHintAntiAlias;
//画布和边的设定
gClear(ColorWhite);
gDrawRectangle(PensBlack,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
//画饼图标题
gDrawString(title,new Font("Tahoma",14),BrushesBlack,new PointF(5,5));
//画饼图的图例
gDrawString(subTitle,new Font("Tahoma",12),BrushesBlack,new PointF(7,35));
//画饼图
float curAngle = 0;
float totalAngle = 0;
for(int i=0;i<dtRowsCount;i++)
{
curAngle = ConvertToSingle(dtRows[i][DataLine]) / sumData 360;
gFillPie(new SolidBrush(ChartUtilGetChartItemColor(i)),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
gDrawPie(PensBlack,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
totalAngle += curAngle;
}
//画图例框及其文字
gDrawRectangle(PensBlack,200,300,199,99);
gDrawString("图表说明",new Font("Tahoma",12,FontStyleBold),BrushesBlack,new PointF(200,300));
//画图例各项
PointF boxOrigin = new PointF(210,330);
PointF textOrigin = new PointF(235,326);
float percent = 0;
for(int i=0;i<dtRowsCount;i++)
{
gFillRectangle(new SolidBrush(ChartUtilGetChartItemColor(i)),boxOriginX,boxOriginY,20,10);
gDrawRectangle(PensBlack,boxOriginX,boxOriginY,20,10);
percent = ConvertToSingle(dtRows[i][DataLine]) / sumData 100;
gDrawString(dtRows[i][1]ToString() + " - " + dtRows[i][0]ToString() + " (" + percentToString("0") + "%)",new Font("Tahoma",10),BrushesBlack,textOrigin);
boxOriginY += 15;
textOriginY += 15;
}
//回收资源
gDispose();
return (Image) bm;
}
}
//画条形图
public class BarChart
{
public BarChart()
{
}
//Render是图形大标题,图开小标题,图形宽度,图形长度,饼图的数据集和饼图的数据集
public Image Render(string title, string subTitle, int width, int height, DataSet chartData)
{
const int SIDE_LENGTH = 400;
const int CHART_TOP = 75;
const int CHART_HEIGHT = 200;
const int CHART_LEFT = 50;
const int CHART_WIDTH = 300;
DataTable dt = chartDataTables[0];
//计算最高的点
float highPoint = 0;
foreach(DataRow dr in dtRows)
{
if(highPoint<ConvertToSingle(dr[0]))
{
highPoint = ConvertToSingle(dr[0]);
}
}
//建立一个Graphics对象实例
Bitmap bm = new Bitmap(width,height);
try
{
Graphics g = GraphicsFromImage(bm);
//设置条图图形和文字属性
gScaleTransform((ConvertToSingle(width))/SIDE_LENGTH,(ConvertToSingle(height))/SIDE_LENGTH);
gSmoothingMode = SmoothingModeDefault;
gTextRenderingHint = TextRenderingHintAntiAlias;
//设定画布和边
gClear(ColorWhite);
gDrawRectangle(PensBlack,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
//画大标题
gDrawString(title,new Font("Tahoma",14),BrushesBlack,new PointF(5,5));
//画小标题
gDrawString(subTitle,new Font("Tahoma",12),BrushesBlack,new PointF(7,35));
//画条形图
float barWidth = CHART_WIDTH / (dtRowsCount 2);
PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2),0);
float barHeight = dtRowsCount;
for(int i=0;i<dtRowsCount;i++)
{
barHeight = ConvertToSingle(dtRows[i][0]) 200 / highPoint 1;
barOriginY = CHART_TOP + CHART_HEIGHT - barHeight;
gFillRectangle(new SolidBrush(ChartUtilGetChartItemColor(i)),barOriginX,barOriginY,barWidth,barHeight);
barOriginX = barOriginX + (barWidth 2);
}
//设置边
gDrawLine(new Pen(ColorBlack,2),new Point(CHART_LEFT,CHART_TOP),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT));
gDrawLine(new Pen(ColorBlack,2),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT),new Point(CHART_LEFT + CHART_WIDTH,CHART_TOP + CHART_HEIGHT));
//画图例框和文字
gDrawRectangle(new Pen(ColorBlack,1),200,300,199,99);
gDrawString("图表说明",new Font("Tahoma",12,FontStyleBold),BrushesBlack,new PointF(200,300));
//画图例
PointF boxOrigin = new PointF(210,330);
PointF textOrigin = new PointF(235,326);
for(int i=0;i<dtRowsCount;i++)
{
gFillRectangle(new SolidBrush(ChartUtilGetChartItemColor(i)),boxOriginX,boxOriginY,20,10);
gDrawRectangle(PensBlack,boxOriginX,boxOriginY,20,10);
gDrawString(dtRows[i][1]ToString() + " - " + dtRows[i][0]ToString(),new Font("Tahoma",10),BrushesBlack,textOrigin);
boxOriginY += 15;
textOriginY += 15;
}
//输出图形
gDispose();
return bm;
}
catch
{
return bm;
}
}
}
public class ChartUtil
{
public ChartUtil()
{
}
public static Color GetChartItemColor(int itemIndex)
{
Color selectedColor;
switch(itemIndex)
{
case 0:
selectedColor = ColorBlue;
break;
case 1:
selectedColor = ColorRed;
break;
case 2:
selectedColor = ColorYellow;
break;
case 3:
selectedColor = ColorPurple;
break;
default:
selectedColor = ColorGreen;
break;
}
return selectedColor;
}
}
}
以上是一个完整的制作柱状图源程序,你可以通过以上程序的更改,做出能满足自己程序的需要。
数据库设置结果的显示格式可以有多种方式,在不同的情况下可以选择不同的格式来展示数据库设置结果: 1 文本格式:将数据库设置结果以文本形式输出,可以在控制台或文本文件中查看。 2 表格格式:将数据库设置结果以表格形式展示,每个设置项对应一列,每个实例对应一行。 3 图表格式:将数据库设置结果以图表形式展示,可以更直观地呈现数据库设置结果。 4 饼图或柱状图格式:将数据库设置结果以饼图或柱状图形式展示,可以更清晰地显示各项设置所占的比重。 5 报告格式:将数据库设置结果以报告形式呈现,可以包含各种图表、表格、文字和注释等内容,更加详细地描述数据库设置结果和各项指标的变化。 需要根据具体情况来选择适合的展示格式,以便更好地理解和分析数据库设置结果。
多簇并列的两层以内堆积柱形图 由于EXCEL图表中的堆积柱形图不能并列,制作并列的堆积柱形图不能直接实现,需要借助簇状柱形图的主次坐标轴用次坐标轴图形覆盖主坐标轴图形的办法实现 制作步聚: (1) 分别确定在主次坐标轴上的数据源
以上就是关于c# 怎样由数据库的数据生成chart柱状图全部的内容,包括:c# 怎样由数据库的数据生成chart柱状图、数据库设置结果的显示格式、echarts怎么实现堆积柱状图,数据来源数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)