`
dcdc723
  • 浏览: 187422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

绘制趋势图(.net) + 上传图片(FileUpload)控件

    博客分类:
  • net
阅读更多
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;
using System.Drawing;

/// <summary>
/// DrawingCurve 的摘要说明
/// </summary>
public class DrawingCurve
{
    
    public int intXLong = 800;   //图片大小 长
    public int intYLong = 600;   //图片大小 高
    public int intXMultiple = 1;    //零刻度的值 X
    public int intYMultiple = 0;    //零刻度的值 Y
    public int intXMax = 12;    //最大刻度(点数) X
    public int intYMax = 30;    //最大刻度(点数) Y

    public int intLeft = 50;   //左边距
    public int intRight = 120; //右边距
    public int intTop = 30;    //上边距
    public int intEnd = 50;    //下边距

    public string strXText = "时间(单位:月)";    //单位 X
    public string strYText = "数量(单位:个)";    //单位 Y
    public string strTitle = "趋势线图";    //标题
    public DataTable tbData;    //要统计的数据


    private int intXScale = 30;    //一刻度长度 X
    private int intYScale = 30;    //一刻度高度 Y
    //private int intX = 0;   //0点 X坐标
    //private int intY = 0;   //0点 Y坐标
    public int intData = 0;    //记录数

    public DrawingCurve()
    {

        intXScale = (intXLong - intLeft - intRight) / (intXMax + 1);//一刻度长度 X
        intYScale = (intYLong - intTop - intEnd) / (intYMax + 1);//一刻度高度 Y

        //intX = intXLong - intLeft;   //0点 X坐标
        //intY = intYLong - intEnd;   //0点 Y坐标
    }

    public Bitmap DrawingImg()
    {

        Bitmap img = new Bitmap(intXLong, intYLong); //图片大小
        Graphics g = Graphics.FromImage(img);
        g.Clear(Color.Snow);
        g.DrawString(strTitle, new Font("宋体", 14), Brushes.Black, new Point(5, 5));
        g.DrawLine(new Pen(Color.Black, 2), intLeft, intYLong - intEnd, intXLong - intRight, intYLong - intEnd); //绘制横向
        g.DrawLine(new Pen(Color.Black, 2), intLeft, intTop, intLeft, intYLong - intEnd);   //绘制纵向

        //绘制纵坐标
        g.DrawString(strYText, new Font("宋体", 12), Brushes.Black, new Point(intLeft, intTop));//Y 单位
        Point p1 = new Point(intLeft - 10, intYLong - intEnd);
        for (int j = 0; j <= intYMax; j++)
        {
            p1.Y = intYLong - intEnd - j * intYScale;
            Point pt = new Point(p1.X + 10, p1.Y);
            //绘制纵坐标的刻度和直线
            g.DrawLine(Pens.Black, pt, new Point(p1.X + 15, p1.Y));
            //绘制纵坐标的文字说明
            g.DrawString(Convert.ToString(j + intYMultiple), new Font("宋体", 12), Brushes.Black, new Point(p1.X - 25, p1.Y - 8));
        }

        //绘制横坐标
        g.DrawString(strXText, new Font("宋体", 12), Brushes.Black, new Point(intXLong - intRight, intYLong - intEnd));//X 单位
        Point p = new Point(intLeft, intYLong - intEnd);
        for (int i = 0; i < intXMax; i++)
        {
            p.X = intLeft + i * intXScale;
            //绘制横坐标刻度和直线
            g.DrawLine(Pens.Black, p, new Point(p.X, p.Y - 5));
            //绘制横坐标的文字说明
            g.DrawString(Convert.ToString(i + intXMultiple), new Font("宋体", 12), Brushes.Black, p);
        }


        intData = tbData.Rows.Count;
        if (intData > 0)
        {
            //趋势线图
            for (int i = 0; i < intData - 1; i++)
            {
                DataRow Row1 = tbData.Rows[i];
                DataRow Row2 = tbData.Rows[i + 1];
                //定义起点
                Point rec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row1[0].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row1[1].ToString()) - intYMultiple) * intYScale));
                //定义终点
                Point dec = new Point(Convert.ToInt32(intLeft + ((TurnNumber(Row2[0].ToString()) - intXMultiple) * intXScale)), Convert.ToInt32(intYLong - intEnd - (TurnNumber(Row2[1].ToString()) - intYMultiple) * intYScale));
                //绘制趋势折线
                g.DrawLine(new Pen(Color.Red), rec, dec);
            }
        }

        return img;
    }

    //转换数字
    private double TurnNumber(string str)
    {
        double dubReturn;
        try
        {
            dubReturn = Convert.ToDouble(str);
        }
        catch
        {
            dubReturn = 0;
        }
        return dubReturn;

    }

}

----------------------------------调用------------------------------------------------

protected void Page_Load(object sender, EventArgs e)
    {
        DataTable MyTable = new DataTable();
        

        string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("App_Data/db.mdb");
        string cmdstr = "SELECT 月份,销量 FROM Result";
        OleDbConnection con = new OleDbConnection(constr);
        con.Open();
        //OleDbCommand cmd = new OleDbCommand(cmdstr, con);
        OleDbDataAdapter da = new OleDbDataAdapter(cmdstr, con);
        da.Fill(MyTable);


        DrawingCurve MyDc = new DrawingCurve();
        MyDc.tbData = MyTable;

        Bitmap img = new Bitmap(100, 100);
        img = MyDc.DrawingImg();
        Graphics g = Graphics.FromImage(MyDc.DrawingImg());

        //显示图形
        img.Save(Response.OutputStream, ImageFormat.Jpeg);;
        g.Dispose();
        Response.Write("<br>" + MyDc.intData.ToString());
    }

 

0
0
分享到:
评论
1 楼 dcdc723 2010-01-29  
.NET上传
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        &nbsp;
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
        <asp:Image ID="Image1" runat="server" Visible="False" /></div>
    </form>
</body>
</html>
后台代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string name = FileUpload1.FileName;//获得上传文件的名字.
        string size = FileUpload1.PostedFile.ContentLength.ToString();//文件大小.
        string type = FileUpload1.PostedFile.ContentType;//文件类型.
        string type2 = name.Substring(name.LastIndexOf(".") + 1);//LastIndexOf()最后一个索引位置匹配.Substring()里面的+1是重载.
        string ipath = Server.MapPath("upimg") + "\\" + name;//取得根目录下面的upimg目录的路径.
        string fpath = Server.MapPath("upfile") + "\\" + name;
        string wpath = "upimg\\" + name;//获得虚拟路径.
        if (type2 == "jpg" || type2 == "gif" || type2 == "bmp" || type2 == "png")
        {
            FileUpload1.SaveAs(ipath);//保存方法,参数是一个地址字符串.
            Image1.ImageUrl = wpath;
            Label1.Text = "你传的文件名是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type +
                "<br>后缀是:" + type2 + "<br>实际路径是:" + ipath + "<br>虚拟路径是:" + fpath;
            Image1.Visible = true;
        }
        else
        {
            Image1.Visible = false;
            FileUpload1.SaveAs(fpath);
            Label1.Text = "你传的文件名是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type +
                "<br>后缀是:" + type2 + "<br>实际路径是:" + ipath + "<br>虚拟路径是:" + fpath;
        }
    }
}

相关推荐

    ASP.NET.FileUpload控件

    ASP.NET的FileUpload控件是Web开发中用于处理文件上传功能的重要组件。它允许用户从他们的本地计算机选择一个或多个文件,并将这些文件上传到服务器。在本文中,我们将深入探讨FileUpload控件的基本用法,包括如何在...

    ASP.NET使用fileupload控件上传图片

    ### ASP.NET 使用 FileUpload 控件上传图片的知识点详解 #### 一、概述 在ASP.NET Web应用程序中,经常需要处理用户上传的文件,尤其是图片。本文将详细介绍如何使用ASP.NET中的`FileUpload`控件来实现图片的上传...

    ASP.Net中FileUpLoad控件内容清空

    在ASP.NET Web开发中,`FileUpload` 控件常被用于实现文件上传功能。但在某些情况下,我们可能需要清空该控件的内容,例如用户取消了文件选择或者上传操作。本文将详细介绍如何在ASP.NET应用程序中有效地清空`...

    ASP.NET中上传控件FileUpload的项目示例

    ASP.NET中的FileUpload控件是开发Web应用时用于处理用户文件上传功能的重要工具。这个控件使得用户可以在网页上选择本地文件并将其上传到服务器,从而实现数据交互。以下是对"ASP.NET中上传控件FileUpload的项目示例...

    ASP.Net中FileUpLoad控件

    FileUpload控件是ASP.NET提供的用于处理用户上传文件的一个服务器控件。它允许用户选择本地计算机上的文件,并将其上传到服务器。FileUpload控件非常易于使用,只需要简单的设置即可完成文件上传功能。 **基本语法...

    ASP.NET中上传控件FileUpload的使用

    ASP.NET中的FileUpload控件是用于处理用户上传文件的关键组件,尤其在开发涉及用户交互的Web应用程序时。在这个教程中,我们将深入探讨如何使用FileUpload控件实现单个和多个图片(或指定文件)的上传。 一、单个...

    ASP.NET+jQuery 批量文件上传控件及示例程序

    在ASP.NET中,我们可以使用多种方式来实现文件上传,如HTML `&lt;input type="file"&gt;` 标签、ASP.NET FileUpload 控件或自定义控件。 jQuery则是一个流行的JavaScript库,简化了JavaScript的DOM操作、事件处理和动画...

    Asp.net 2.0 FileUpload 控件的用法

    `FileUpload`控件是ASP.NET框架中用于处理用户上传文件的一个重要组件,它允许用户选择一个或多个文件并将其上传到服务器。在上述提供的代码片段中,我们可以看到`FileUpload`控件是如何被集成到一个简单的ASP.NET ...

    asp.net+ajax批量上传图片,批量上传,批量上传图片,上传图片

    在ASP.NET中,可以使用FileUpload控件来选择本地文件,但单个FileUpload控件一次只能上传一个文件。为实现批量上传,我们需要借助多文件选择功能,这通常可以通过HTML5的`&lt;input type="file" multiple&gt;`属性实现。...

    .net+vb上传图片

    标题中的".net+vb上传图片"指的是使用.NET框架和Visual Basic (VB)语言实现的图片上传功能。在.NET Framework中,开发人员可以利用ASP.NET Web Forms来构建网页应用,而VB是.NET支持的一种面向对象的编程语言。在这...

    Asp.net 2.0 用FileUpload 控件实现多文件上传

    在ASP.NET 2.0中,FileUpload控件是用于处理用户从Web表单上传文件的核心组件。这个控件允许用户选择一个或多个本地文件,然后将这些文件发送到服务器进行存储或处理。在本教程中,我们将深入探讨如何利用FileUpload...

    fileupload上传图片前预览

    在ASP.NET开发中,FileUpload控件是用于处理用户上传文件的核心组件,特别是处理图片上传时,为了提供更好的用户体验,通常需要在用户正式提交前实现图片预览功能。这一功能可以减少用户因错误选择或不符合规格的...

    一个基于ASP.NET+C#实现的Web上传进度条控件程序例子

    另一方面,FileUpload控件是ASP.NET内置的用于文件上传的控件,通过监听它的事件,我们也可以获取到文件上传进度。 接下来,我们要关注如何将这些进度信息传递给前端。通常,服务器会通过JSON或XML格式的数据响应,...

    Asp.net FileUpload控件 预览

    下面将详细讨论如何使用Asp.net FileUpload控件实现不上传图片的预览功能。 首先,我们需要在ASP.NET页面上添加FileUpload控件。在.aspx文件中,可以这样声明: ```html &lt;asp:FileUpload ID="FileUpload1" runat=...

    .net使用FileUpLoad控件上传文件

    ### .NET 使用 FileUpload 控件上传文件 在 ASP.NET Web 应用程序中,经常需要实现文件上传功能,这可以通过使用 `FileUpload` 控件来完成。本文将详细介绍如何使用 `.NET` 中的 `FileUpload` 控件进行单个文件的...

    ASP.NET 2.0高级控件之FileUpload控件

    ### ASP.NET 2.0 高级控件之 FileUpload 控件详解 #### 一、FileUpload 控件概述 在 ASP.NET 2.0 的框架下,FileUpload 控件是处理用户上传文件的一个强大工具。它允许用户选择本地计算机上的文件,并将其上传到...

    .NET 文件上传文件控件(FileUpload)使用实例

    .NET 文件上传文件控件(FileUpload)使用实例 .NET Framework 提供了一个名为 FileUpload 的控件,用于实现文件上传功能。本文将通过一个简单的图片上传程序,来演示 FileUpload 控件的使用实例。 在 ASP.NET 中...

    aps.net+flash 多图片上传预览

    5. 文件上传控件:在ASP.NET中,可以使用FileUpload控件来处理文件上传,但为了实现多图片上传,需要自定义控件或者使用第三方库如SWFUpload,它是一个基于Flash的文件上传组件,能够实现多文件上传和预览。...

    FileUpload控件自动上传

    在.NET框架中,FileUpload控件是用于处理用户在Web应用程序中上传文件的关键组件。它允许用户选择本地计算机上的文件,并将其发送到服务器进行进一步处理。在这个特定的场景中,我们关注的是FileUpload控件的自动...

Global site tag (gtag.js) - Google Analytics