public class CSChart
{
private int ypercent; //纵坐标分段数
private int xpercent; //横坐标分段数
private int width; //绘图区宽
private int height; //绘图区高
private bool xcenter; //是不以X轴Y轴交点作为X轴的起始坐标点
private int xpercentvalue;//X轴每段表示的值
private int ypercentvalue;//Y轴每段表示的值
private int xstartvalue;//X轴超始值
private int ystartvalue;//Y轴起始值
private int xlinelength;//X轴长
private int ylinelength;//Y轴长
private string xname;//X辆名
private string yname;//Y轴名
private int[] data; //绘图数据
private Graphics gt; //绘图设备
public int[] Data
{
set
{
data=value;
}
get
{
return data;
}
}
public Graphics g
{
set
{
gt=value;
}
get
{
return gt;
}
}
public int YPercent
{
set
{
ypercent=value;
}
get
{
return ypercent;
}
}

public int XPercent
{
set
{
xpercent=value;
}
get
{
return xpercent;
}
}
public int XPercentValue
{
set
{
xpercentvalue=value;
}
get
{
return xpercentvalue;
}
}
public int YPercentValue
{
set
{
ypercentvalue=value;
}
get
{
return ypercentvalue;
}
}
public int XStartValue
{
set
{
xstartvalue=value;
}
get
{
return xstartvalue;
}

}
public int YStartValue
{
set
{
ystartvalue=value;
}
get
{
return ystartvalue;
}

}

public int XLineLength
{
set
{
xlinelength=value;
}
get
{
return xlinelength;
}
}
public int YLineLength
{
set
{
ylinelength=value;
}
get
{
return ylinelength;
}
}


public string XName
{
set
{
xname=value;
}
get
{
return xname;
}
}
public string YName
{
set
{
yname=value;
}
get
{
return yname;
}
}
public int Width
{
}
public int Height
{
}
public bool Xcenter
{
![]()
![]()
}
public CSChart()
{
//
// TODO: 在此处添加构造函数逻辑
//
xpercent=13;
ypercent=12;
width=600;
height=500;
xpercentvalue=1;
ypercentvalue=10;
xstartvalue=1990;
ystartvalue=0;
yname="资金";
xname="月份";
xcenter=false;
xlinelength=400;
ylinelength=400;
;
}
public CSChart(int _xpercent,int _ypercent,int _width,int _height,int _xpercentvalue,int _ypercentvalue,int _xstartvalue,int _ystartvalue,string _xname,string _yname,bool _xcenter,int _xlinelength,int _ylinelength,int[] _data)
{
xpercent=_xpercent;
ypercent=_ypercent;
width=_width;
height=_height;
XPercentValue=_xpercentvalue;
YPercentValue=_ypercentvalue;
xstartvalue=_xstartvalue;
ystartvalue=_ystartvalue;
xname=_xname;
yname=_yname;
xcenter=_xcenter;
xlinelength=_xlinelength;
ylinelength=_ylinelength;
data=_data;
}
public void DrawCross(Brush brush,int linewidth,bool center)
{

Pen CrossPen = new Pen(brush,linewidth);
Font font = new Font("宋体",10);
xcenter=center;
g.DrawLine(CrossPen,80,Height-80,80+XLineLength,Height-80);//画X轴
Point[] Points = new Point[3];//定义X轴箭头
Points[0].X=80+XLineLength;Points[0].Y=Height-85;
Points[1].X=80+XLineLength;Points[1].Y=Height-75;
Points[2].X=100+XLineLength;Points[2].Y=Height-80;
g.FillPolygon(brush,Points); //画X轴箭头
g.DrawString(XName,font,brush,100+XLineLength,Height-80);//X轴名
if(Xcenter)
{
for(int i=0;i<xpercent;i++)
{
g.DrawLine(CrossPen,80+XLineLength/XPercent/2+i*XLineLength/XPercent,Height-80,80+XLineLength/XPercent/2+i*XLineLength/XPercent,Height-76);//画X轴单位点
g.DrawString(Convert.ToString(XStartValue+i*XPercentValue),font,new SolidBrush(Color.Black),80+XLineLength/XPercent/2+i*XLineLength/XPercent-XStartValue.ToString().Length*font.Size/2,Height-75);//画X轴坐标值
}
}
else
{
for(int i=0;i<xpercent;i++)
{
g.DrawLine(CrossPen,80+i*XLineLength/XPercent,height-80,80+i*XLineLength/XPercent,Height-76);//画X轴单位点
g.DrawString(Convert.ToString(XStartValue+i*XPercentValue),font,new SolidBrush(Color.Black),80+i*XLineLength/XPercent-XStartValue.ToString().Length*font.Size/2,Height-75);//画X轴坐标值
}
}
g.DrawLine(CrossPen,80,Height-80,80,Height-80-YLineLength);//画Y轴
Points[0].X=75;Points[0].Y=Height-80-YLineLength; //Y轴箭头
Points[1].X=85;Points[1].Y=Height-80-YLineLength;
Points[2].X=80;Points[2].Y=Height-100-YLineLength;
g.FillPolygon(brush,Points);//画Y轴箭头
g.DrawString(yname,font,brush,85,Height-80-YLineLength);//画Y轴名
for(int i=0;i<ypercent;i++)
{
g.DrawLine(CrossPen,80,Height-80-i*YLineLength/YPercent,76,Height-80-i*YLineLength/YPercent);//画Y轴单位点
g.DrawString(Convert.ToString(YStartValue+i*YPercentValue),font,new SolidBrush(Color.Black),50,Height-85-i*YLineLength/YPercent);//画X轴坐标值
}
}
public void DrawChartName(string name,Font font,Brush brush)//画统计表头(名)
{
g.DrawString(name,font,brush,(Width-name.Length*font.Size)/2,30);
}
public void DrawChart(int[] data,Graphics g)
{
private int ypercent; //纵坐标分段数
private int xpercent; //横坐标分段数
private int width; //绘图区宽
private int height; //绘图区高
private bool xcenter; //是不以X轴Y轴交点作为X轴的起始坐标点
private int xpercentvalue;//X轴每段表示的值
private int ypercentvalue;//Y轴每段表示的值
private int xstartvalue;//X轴超始值
private int ystartvalue;//Y轴起始值
private int xlinelength;//X轴长
private int ylinelength;//Y轴长
private string xname;//X辆名
private string yname;//Y轴名
private int[] data; //绘图数据
private Graphics gt; //绘图设备
*
*
* */
Brush brush = new SolidBrush(Color.Black);
Pen CrossPen = new Pen(brush,2);
g.DrawLine(CrossPen,100,50,100,YLineLength+50); //y 轴
g.DrawLine(CrossPen,100,YLineLength+50,100+XLineLength,YLineLength+50); //x 轴
Point[] HPoints = new Point[3];
HPoints[0].X=95;HPoints[0].Y=50;
HPoints[1].X=105;HPoints[1].Y=50;
HPoints[2].X=100;HPoints[2].Y=30;

Point[] YPoints = new Point[3];
YPoints[0].X=100+XLineLength;YPoints[0].Y=YLineLength+45;
YPoints[1].X=100+XLineLength;YPoints[1].Y=YLineLength+55;
YPoints[2].X=120+XLineLength;YPoints[2].Y=YLineLength+50;
g.FillPolygon(brush,HPoints);
g.FillPolygon(brush,YPoints);
int y=0;
int x=0;
for(int i=0;i<ypercent;i++)
{
g.DrawLine(CrossPen,96,YLineLength+50-(YLineLength/YPercent)*i,100,YLineLength+50-(YLineLength/YPercent)*i); //在y轴上标点
y=i*ypercentvalue;
g.DrawString(y.ToString(),new Font("宋体",10),brush,75,YLineLength+45-i*(YLineLength/YPercent));
}
for(int i=0;i<xpercent;i++)
{
g.DrawLine(CrossPen,100+i*(XLineLength/XPercent),YLineLength+50,100+i*(XLineLength/XPercent),YLineLength+54);//在x轴上标点
x=i*xpercentvalue+1;
g.DrawString(x.ToString(),new Font("宋体",10),brush,95+i*(XLineLength/XPercent),YLineLength+60);
}
g.DrawString(xname,new Font("宋体",10),brush,XLineLength+100,YLineLength+70);
g.DrawString(yname,new Font("宋体",10),brush,105,50);
for(int i=0;i<data.Length;i++)
{
int hight =300*data[i]/100;
g.FillRectangle(new SolidBrush(Color.Red),new Rectangle(100+i*(XLineLength/XPercent)+(XLineLength/XPercent/2-10),YLineLength+50-hight,20,hight));
}
}
public bool SetData(int[] newdata)
{
if(newdata.Length==xpercent)
{
data=newdata;
return true;
}
else
return false;
}
public void DrawLineData(Color color,int linewidth)
{
Pen pen = new Pen(new SolidBrush(color),linewidth);
Point[] points = new Point[XPercent];
for(int i=0;i<XPercent;i++)
{
if(Xcenter)
{
points[i].X=100+XLineLength/XPercent/2+i*XLineLength/XPercent;
points[i].Y=Height-80-(Data[i]-YStartValue)*YLineLength/YPercentValue/YPercent;

}
else
{
points[i].X=100+(XLineLength/XPercent/2-10)+i*XLineLength/XPercent;
//points[i].Y=Height-80-(Data[i]-YStartValue)*YLineLength/YPercentValue/YPercent;
points[i].Y=YLineLength+50-Data[i]*3;
}
}
// Point[] points=new Point[2];
// points[0].X=100;points[0].Y=500;
// points[1].X=200;points[1].Y=300;
g.DrawLines(pen,points);
}
public void DrawRecData(Color color,int recwidth)//画统计表长条
{
SolidBrush brush = new SolidBrush(color);
Pen pen = new Pen(brush,1);
for(int i=0;i<ypercent;i++)
{
g.FillRectangle(brush,80+i*xlinelength/xpercent+(xlinelength/xpercent-recwidth)/2,height-80-(data[i]-ystartvalue)*ylinelength/ypercentvalue/ypercent,recwidth,(data[i]-ystartvalue)*ylinelength/ypercentvalue/ypercent);
}
}
}
相关文章:
-
2022-12-23
-
2022-12-23
-
2021-11-10
-
2021-06-10
-
2021-07-23
-
2021-11-11
-
2021-05-23
猜你喜欢
-
2022-03-03
-
2021-10-26
-
2021-06-15
-
2021-08-15
相关资源
-
下载
2022-12-23
-
下载
2022-12-04
-
下载
2023-03-23
-
下载
2022-12-10
-
下载
2021-06-05