C# 绘制曲线图,并保存为Gif格式文件 调试通过

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下

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值