/// <summary>
/// 繪制折線圖
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Paint(object sender, PaintEventArgs e)
{
//首先确定原點
Point centerPoint=new Point(180,340);
//自定義一個帶有箭頭的畫筆
Pen pen = new Pen(Color.Black,1);
pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
//得到目前窗體的Graphics對象
Graphics g = e.Graphics;
//畫X軸和Y軸
//g.DrawLine(pens.Black,centerPoint,new Point(centerPoint.X+600,centerPoint.Y));
//g.DrawLine(Pens.Black, centerPoint, new Point(centerPoint.X, 40));
g.DrawLine(pen, centerPoint, new Point(centerPoint.X + 650, centerPoint.Y));
g.DrawLine(pen, centerPoint, new Point(centerPoint.X, 20));
//繪制X軸的點
for (int i = 0; i < 12; i++)
g.DrawLine(Pens.Black, new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y), new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y-5));
g.DrawString((i + 1).ToString() + "月", this.Font, Brushes.Black, new PointF((centerPoint.X + (i + 1) * 50) - 7, centerPoint.Y + 3));
}
g.DrawString("X:月份",this.Font,Brushes.Black,new Point(828,355));
//繪制Y軸的點
g.DrawLine(Pens.Black, new Point(centerPoint.X, centerPoint.Y - (i + 1) * 25), new Point(centerPoint.X + 5, centerPoint.Y-(i + 1) * 25));
//g.DrawLine(Pens.Black, new Point(centerPoint.X , centerPoint.Y), new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y - 5));
g.DrawString(string.Format("{0}",(i+1)*10), this.Font, Brushes.Black, new PointF((centerPoint.X + 5) - 35, (centerPoint.Y - (i + 1) * 25)-5));
//計算十二個月銷售額對應的坐标點
double[] data = { 56.2, 66.3, 98.4, 34.5, 55.6, 87.3, 81.4, 33.3, 46.4, 34.6, 114.5, 80.4};
PointF[] dataPoint = new PointF[data.Length];
for (int i = 0; i < data.Length ; i++)
float y = (float)(340 - data[i] * 2.5);
float x = centerPoint.X + (i + 1) * 50;
PointF point = new PointF(x, y);
dataPoint[i] = point;
//繪制十二個點的折線
g.DrawRectangle(Pens.Black, dataPoint[i].X, dataPoint[i].Y, 2, 2);
//将十二個點串成線
g.DrawLines(Pens.Black, dataPoint);
//方法二:Path方法
//GraphicsPath path = new GraphicsPath();//要導入using System.Drawing.Drawing2D;
//for (int i = 0; i < data.Length; i++)
//{
// path.AddRectangle(new RectangleF(dataPoint[i], new SizeF(2, 2)));
//}
//path.AddLines(dataPoint);
//g.DrawPath(Pens.Black, path);
g.DrawString("Y", this.Font, Brushes.Black, new Point(155,7));
g.DrawString("銷售額:機關(萬元)", this.Font, Brushes.Black, new Point(14, 14));
g.DrawString("某工廠某産品年度銷售額圖表",this.Font, Brushes.Black, new Point(420,14));
pen.Dispose();
本文轉自蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366814,如需轉載請自行聯系原作者