C# 绘制曲线图,并保存为Gif格式文件 调试通过
2014-05-04 19:03
363 查看
protected void ShowImage()
{
//数据初始化
string[] month = new string[12] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" };
int[] d = new int[12] { 23, 66, 38, 56, 39, 79, 75, 142, 134, 112, 134, 127 };
//画图初始化
Bitmap bMap = new Bitmap(800, 500);
Graphics gph = Graphics.FromImage(bMap);
gph.Clear(Color.LightCyan);
//画边框
Pen p = new Pen(Color.Black, 2);
gph.DrawRectangle(p, 1, 1, 798, 498);
//中心点
PointF cPt = new PointF(60, 460);
//X轴三角形
PointF[] xPt = new PointF[3] { new PointF(700 + 15, cPt.Y), new PointF(700, cPt.Y - 4), new PointF(700, cPt.Y + 4) };
//Y轴三角形
PointF[] yPt = new PointF[3] { new PointF(cPt.X, cPt.X - 15), new PointF(cPt.X - 4, cPt.X), new PointF(cPt.X + 4, cPt.X) };
//图表标题
gph.DrawString("51Venue场地客户月访问走势图", new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + 60, cPt.X));
//画X轴
gph.DrawLine(Pens.Black, cPt.X, cPt.Y, 700, cPt.Y);
gph.DrawPolygon(Pens.Black, xPt);
gph.FillPolygon(new SolidBrush(Color.Black), xPt);
gph.DrawString("月份", new Font("宋体", 9), Brushes.Black, new PointF(720, 455));
//画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("宋体", 9), Brushes.Black, new PointF(25, 30));
//画Y轴刻度
for (int i = 1; i <= 20; i++)
{
gph.DrawString((i * 10).ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X - 30, cPt.Y - i * 20 - 6));
gph.DrawLine(Pens.Black, cPt.X - 3, cPt.Y - i * 20, cPt.X, cPt.Y - i * 20);
}
//画X轴刻度
for (int i = 1; i <= month.Length; i++)
{
gph.DrawString(month[i - 1], new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 - 5, cPt.Y + 10));
gph.DrawLine(Pens.Black, cPt.X + i * 50, cPt.Y, cPt.X + i * 50, cPt.Y - 3);
}
//画数据走势图
for (int i = 1; i <= 12; i++)
{
//画折线
if (i < 12)
{
gph.DrawLine(new Pen(Color.GreenYellow, 2), cPt.X + i * 50, cPt.Y - d[i - 1] * 2, cPt.X + i * 50 + 50, cPt.Y - d[i] * 2);
}
//画点
gph.DrawEllipse(Pens.Red, cPt.X + i * 50 - 2, cPt.Y - d[i - 1] * 2 - 2, 4, 4);
gph.FillEllipse(new SolidBrush(Color.White), cPt.X + i * 50 - 2, cPt.Y - d[i - 1] * 2 - 2, 4, 4);
if (i < 12)
{
if (d[i - 1] <= 0)
{
//画数值
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 - 10, cPt.Y - d[i - 1] * 2 - 15));
}
else
{
if (d[i - 1] < d[i])
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50, cPt.Y - d[i - 1] * 2 + 15));
}
else
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 + 5, cPt.Y - d[i - 1] * 2 - 15));
}
}
}
else
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 + 5, cPt.Y - d[i - 1] * 2 + 15));
}
}
//保存输出图片,图片位置在你所建项目的Debug目录下
bMap.Save("图片名.Gif", System.Drawing.Imaging.ImageFormat.Gif);//winform下
//bMap.Save(Server.MapPath("图片名.gif"), ImageFormat.Gif)=//webform下
b3f6
}
{
//数据初始化
string[] month = new string[12] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" };
int[] d = new int[12] { 23, 66, 38, 56, 39, 79, 75, 142, 134, 112, 134, 127 };
//画图初始化
Bitmap bMap = new Bitmap(800, 500);
Graphics gph = Graphics.FromImage(bMap);
gph.Clear(Color.LightCyan);
//画边框
Pen p = new Pen(Color.Black, 2);
gph.DrawRectangle(p, 1, 1, 798, 498);
//中心点
PointF cPt = new PointF(60, 460);
//X轴三角形
PointF[] xPt = new PointF[3] { new PointF(700 + 15, cPt.Y), new PointF(700, cPt.Y - 4), new PointF(700, cPt.Y + 4) };
//Y轴三角形
PointF[] yPt = new PointF[3] { new PointF(cPt.X, cPt.X - 15), new PointF(cPt.X - 4, cPt.X), new PointF(cPt.X + 4, cPt.X) };
//图表标题
gph.DrawString("51Venue场地客户月访问走势图", new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + 60, cPt.X));
//画X轴
gph.DrawLine(Pens.Black, cPt.X, cPt.Y, 700, cPt.Y);
gph.DrawPolygon(Pens.Black, xPt);
gph.FillPolygon(new SolidBrush(Color.Black), xPt);
gph.DrawString("月份", new Font("宋体", 9), Brushes.Black, new PointF(720, 455));
//画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("宋体", 9), Brushes.Black, new PointF(25, 30));
//画Y轴刻度
for (int i = 1; i <= 20; i++)
{
gph.DrawString((i * 10).ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X - 30, cPt.Y - i * 20 - 6));
gph.DrawLine(Pens.Black, cPt.X - 3, cPt.Y - i * 20, cPt.X, cPt.Y - i * 20);
}
//画X轴刻度
for (int i = 1; i <= month.Length; i++)
{
gph.DrawString(month[i - 1], new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 - 5, cPt.Y + 10));
gph.DrawLine(Pens.Black, cPt.X + i * 50, cPt.Y, cPt.X + i * 50, cPt.Y - 3);
}
//画数据走势图
for (int i = 1; i <= 12; i++)
{
//画折线
if (i < 12)
{
gph.DrawLine(new Pen(Color.GreenYellow, 2), cPt.X + i * 50, cPt.Y - d[i - 1] * 2, cPt.X + i * 50 + 50, cPt.Y - d[i] * 2);
}
//画点
gph.DrawEllipse(Pens.Red, cPt.X + i * 50 - 2, cPt.Y - d[i - 1] * 2 - 2, 4, 4);
gph.FillEllipse(new SolidBrush(Color.White), cPt.X + i * 50 - 2, cPt.Y - d[i - 1] * 2 - 2, 4, 4);
if (i < 12)
{
if (d[i - 1] <= 0)
{
//画数值
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 - 10, cPt.Y - d[i - 1] * 2 - 15));
}
else
{
if (d[i - 1] < d[i])
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50, cPt.Y - d[i - 1] * 2 + 15));
}
else
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 + 5, cPt.Y - d[i - 1] * 2 - 15));
}
}
}
else
{
gph.DrawString(d[i - 1].ToString(), new Font("宋体", 9), Brushes.Black, new PointF(cPt.X + i * 50 + 5, cPt.Y - d[i - 1] * 2 + 15));
}
}
//保存输出图片,图片位置在你所建项目的Debug目录下
bMap.Save("图片名.Gif", System.Drawing.Imaging.ImageFormat.Gif);//winform下
//bMap.Save(Server.MapPath("图片名.gif"), ImageFormat.Gif)=//webform下
b3f6
}
相关文章推荐
- C#中保存GIF文件后透明背景问题的一个解决方法
- C#调用iTextSharp组件生成PDF文件, 在VS2005下已经调试通过!
- C#串口采集短信GSM chart图表使用示例 保存数据到access数据库和每日.txt文件并实时显示各参数曲线
- C#保存文件为无BOM的utf8格式
- C#源码学习之---将数据库数据以XML文件格式保存
- c#通过xml保存程序配置文件
- 如何将你在FLASH 8.0里制作完成的动态图片保存成GIF格式的文件,我来教你!!!
- 如何将你在FLASH 8.0里制作完成的动态图片保存成GIF格式的文件,我来教你!!!
- 通过C#来加载X509格式证书文件并生成RSA对象
- C# 保存Excel文件 ( 打开Excel文件格式与扩展名指定格式不一致)
- 如何在CAD中绘制曲线?并保存为dwg 格式的?
- C# 判断图形文件(GIF,JPG,PNG)的图片格式的方法
- 如何通过C#保存一篇Excel文件?
- 2 C#串口或TCP远程采集数据 chart图表使用示例 保存数据到access数据库和每日.txt文件并实时显示各参数曲线
- C# Visual Studio 2005中RichTextBox保存文件为rtf格式
- python通过串口读取GPS NMEA格式的数据,并保存为csv文件
- c#第三次作业 C#读取Excel文件,并保存成HTML格式
- C# 查找指定目录下指定文件名或格式的文件并将结果保存到文本
- C#代码通过dtd验证xml文件格式是否正确
- 初涉C#之读取txt文件并绘制坐标曲线图