Bitmap bmap = new Bitmap(500, 500);
Graphics gph = Graphics.FromImage(bmap);
gph.Clear(Color.White); PointF cpt = new PointF(40, 420);//中心点
PointF[] xpt = new PointF[3]{new PointF(cpt.Y+15,cpt.Y),
new PointF(cpt.Y,cpt.Y-8),new PointF(cpt.Y,cpt.Y+8)};//x轴三角形
PointF[] ypt = new PointF[3]{new PointF(cpt.X,cpt.X-15),
new PointF(cpt.X-8,cpt.X),new PointF(cpt.X+8,cpt.X)};//y轴三角形
gph.DrawString("支出情况折线图", new Font("宋体", 14),
Brushes.Black, new PointF(cpt.X + 60, cpt.X));//图表标题
//画x轴
gph.DrawLine(Pens.Black, cpt.X, cpt.Y, cpt.Y, cpt.Y);
gph.DrawPolygon(Pens.Black, xpt);
gph.FillPolygon(new SolidBrush(Color.Black), xpt);
gph.DrawString("类型", new Font("宋体", 12), Brushes.Black,
new PointF(cpt.Y + 10, cpt.Y + 10));
//画y轴
gph.DrawLine(Pens.Black, cpt.X, cpt.Y, cpt.X, cpt.X);
gph.DrawPolygon(Pens.Black, ypt);
gph.FillPolygon(new SolidBrush(Color.Black), ypt);
gph.DrawString("单位(百分比)", new Font("宋体", 12),
Brushes.Black, new PointF(0, 7));
for (int i = 1; i <= 8; i++)
{
//画y轴刻度
if (i < 11)
{
gph.DrawString((i * 10).ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X - 30, cpt.Y - i * 30 - 6));
gph.DrawLine(Pens.Black, cpt.X - 3, cpt.Y - i * 30,
cpt.X, cpt.Y - i * 30);
} //画x轴项目
gph.DrawString(PayInfo[i - 1].Substring(0, 1), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30 - 5, cpt.Y + 5));
gph.DrawString(PayInfo[i - 1].Substring(1, 1), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30 - 5, cpt.Y + 20));
if (PayInfo[i - 1].Length > 2)
gph.DrawString(PayInfo[i - 1].Substring(2, 1),
new Font("宋体", 11), Brushes.Black,
new PointF(cpt.X + i * 30 - 5, cpt.Y + 35));
//画点
gph.DrawEllipse(Pens.Black, cpt.X + i * 30 - 1.5f, cpt.Y - d[i - 1] * 3 - 1.5f, 3, 3);
gph.FillEllipse(new SolidBrush(Color.Black), cpt.X + i * 30 - 1.5f,
cpt.Y - d[i - 1] * 3 - 1.5f, 3, 3);
//画数值
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30, cpt.Y - d[i - 1] * 3));
//画折线
if (i > 1) gph.DrawLine(Pens.Red, cpt.X + (i - 1) * 30, cpt.Y - d[i - 2] * 3,
cpt.X + i * 30, cpt.Y - d[i - 1] * 3);
}
for (int j = 1; j <= 10; j++)
{
if (j < 11)
{
gph.DrawString((j * 10).ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X - 30, cpt.Y - j * 30 - 6));
gph.DrawLine(Pens.Black, cpt.X - 3, cpt.Y - j * 30,
cpt.X, cpt.Y - j * 30);
}
}
//这里的 中心点 Y轴三角形 X轴三角形 是什么东西啊
Graphics gph = Graphics.FromImage(bmap);
gph.Clear(Color.White); PointF cpt = new PointF(40, 420);//中心点
PointF[] xpt = new PointF[3]{new PointF(cpt.Y+15,cpt.Y),
new PointF(cpt.Y,cpt.Y-8),new PointF(cpt.Y,cpt.Y+8)};//x轴三角形
PointF[] ypt = new PointF[3]{new PointF(cpt.X,cpt.X-15),
new PointF(cpt.X-8,cpt.X),new PointF(cpt.X+8,cpt.X)};//y轴三角形
gph.DrawString("支出情况折线图", new Font("宋体", 14),
Brushes.Black, new PointF(cpt.X + 60, cpt.X));//图表标题
//画x轴
gph.DrawLine(Pens.Black, cpt.X, cpt.Y, cpt.Y, cpt.Y);
gph.DrawPolygon(Pens.Black, xpt);
gph.FillPolygon(new SolidBrush(Color.Black), xpt);
gph.DrawString("类型", new Font("宋体", 12), Brushes.Black,
new PointF(cpt.Y + 10, cpt.Y + 10));
//画y轴
gph.DrawLine(Pens.Black, cpt.X, cpt.Y, cpt.X, cpt.X);
gph.DrawPolygon(Pens.Black, ypt);
gph.FillPolygon(new SolidBrush(Color.Black), ypt);
gph.DrawString("单位(百分比)", new Font("宋体", 12),
Brushes.Black, new PointF(0, 7));
for (int i = 1; i <= 8; i++)
{
//画y轴刻度
if (i < 11)
{
gph.DrawString((i * 10).ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X - 30, cpt.Y - i * 30 - 6));
gph.DrawLine(Pens.Black, cpt.X - 3, cpt.Y - i * 30,
cpt.X, cpt.Y - i * 30);
} //画x轴项目
gph.DrawString(PayInfo[i - 1].Substring(0, 1), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30 - 5, cpt.Y + 5));
gph.DrawString(PayInfo[i - 1].Substring(1, 1), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30 - 5, cpt.Y + 20));
if (PayInfo[i - 1].Length > 2)
gph.DrawString(PayInfo[i - 1].Substring(2, 1),
new Font("宋体", 11), Brushes.Black,
new PointF(cpt.X + i * 30 - 5, cpt.Y + 35));
//画点
gph.DrawEllipse(Pens.Black, cpt.X + i * 30 - 1.5f, cpt.Y - d[i - 1] * 3 - 1.5f, 3, 3);
gph.FillEllipse(new SolidBrush(Color.Black), cpt.X + i * 30 - 1.5f,
cpt.Y - d[i - 1] * 3 - 1.5f, 3, 3);
//画数值
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X + i * 30, cpt.Y - d[i - 1] * 3));
//画折线
if (i > 1) gph.DrawLine(Pens.Red, cpt.X + (i - 1) * 30, cpt.Y - d[i - 2] * 3,
cpt.X + i * 30, cpt.Y - d[i - 1] * 3);
}
for (int j = 1; j <= 10; j++)
{
if (j < 11)
{
gph.DrawString((j * 10).ToString(), new Font("宋体", 11),
Brushes.Black, new PointF(cpt.X - 30, cpt.Y - j * 30 - 6));
gph.DrawLine(Pens.Black, cpt.X - 3, cpt.Y - j * 30,
cpt.X, cpt.Y - j * 30);
}
}
//这里的 中心点 Y轴三角形 X轴三角形 是什么东西啊
PointF[] xpt = new PointF[3]{new PointF(cpt.Y+15,cpt.Y),
new PointF(cpt.Y,cpt.Y-8),new PointF(cpt.Y,cpt.Y+8)};//x轴三角形