在asp.net中创建动态图形

在asp.net中创建动态图形,asp.net,gdi+,Asp.net,Gdi+,我正忙于在asp.net中创建控件。控件由一些文本和图像组成。该图像将用于显示图形。控件通过从数据库中读取图形来获取数据。似乎我有两个选项来显示图像框中的图形。首先,我可以从数据创建一个jpg并将文件保存在服务器上。然后我可以将此文件加载到图像框中。我认为如果不同的用户试图同时访问该站点,这会导致问题,所以我认为这不是一个好的选择。其他选项是创建一个名为output的文件,该文件输出的图形如下:objBitmap.SaveResponse.OutputStream,ImageFormat.Gif

我正忙于在asp.net中创建控件。控件由一些文本和图像组成。该图像将用于显示图形。控件通过从数据库中读取图形来获取数据。似乎我有两个选项来显示图像框中的图形。首先,我可以从数据创建一个jpg并将文件保存在服务器上。然后我可以将此文件加载到图像框中。我认为如果不同的用户试图同时访问该站点,这会导致问题,所以我认为这不是一个好的选择。其他选项是创建一个名为output的文件,该文件输出的图形如下:objBitmap.SaveResponse.OutputStream,ImageFormat.Gif

然后我可以在我的控件中显示如下图像:Image1.ImageUrl=output.aspx

我面临的问题是如何将数据从控件获取到输出页面?据我所知,作为参数传递的数据太多了。如果有其他更好的方法,请告诉我


谢谢

您可以将图像内容写入output.aspx的响应中。类似的内容取自我现有的一个GetImage页面:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim strFilename As String

        strFilename = Request.QueryString("filename")

        Dim strPath As String = AppSettings("ProxyImageSavePath") & strFilename

        Response.Clear()
        Response.ContentType = "image/jpeg"

        If Not IO.File.Exists(strPath) Then
            'erm
            Response.Write("file not found")
        Else
            Response.WriteFile(strPath)
        End If

        Response.End()

    End Sub

编辑:我刚刚意识到这可能不是你想要的解决方案;不过,您的Web服务器应该能够缓存此数据。

您需要处理程序。请参阅本文中创建ImageHandler HTTP处理程序一节,您将找到如何编写处理程序的代码,以便它输出一个图像。你不需要全部,这只是一个例子。 您还需要在web.config中注册处理程序。
要引用它,请使用Image1.ImageUrl=handler.ashx?graphdata=xxxx。使用QueryString获取数据源以生成图表。

谢谢,它让我走上了正确的轨道。因此,我的数据存储在数据库的某个表中。我应该发送数据库中数据的索引以及表名,然后从那里读取吗?类似于:Image1.ImageUrl=handler.ashx?table=sales&id=10。或者有更好的方法吗?欢迎。这是一个好办法。仅出于安全原因,我会选择构造类型=s而不是table=sales,并基于此决定使用哪个查询。