Создание динамической графики в asp.net - PullRequest
0 голосов
/ 05 сентября 2011

Я занят созданием элемента управления в asp.net. Элемент управления состоит из текста и изображения. Изображение будет использоваться для отображения графика. Элемент управления получает данные для графика, считывая их из базы данных. Кажется, у меня есть два варианта отображения графика в окне изображения. Во-первых, я могу создать JPG из данных и сохранить файл на сервере. Затем я могу загрузить этот файл в поле изображения. Я думаю, что это может вызвать проблемы, если различные пользователи попытаются получить доступ к сайту одновременно, поэтому я не думаю, что это хороший вариант. Другой вариант - создать файл с именем output, который выводит график следующим образом: objBitmap.Save(Response.OutputStream, ImageFormat.Gif)

Затем я могу отобразить изображение, как это в моем контроле: Image1.ImageUrl = "output.aspx"

Проблема, с которой я сталкиваюсь, заключается в том, как мне передать данные из моего элемента управления на страницу вывода? Насколько я знаю, это слишком много данных для передачи в качестве параметра. Если есть другой лучший способ сделать это, пожалуйста, сообщите мне

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

Вам нужны обработчики. Посмотрите в этой статье Защита ваших изображений , раздел «Создание HTTP-обработчика ImageHandler», вы найдете код, как написать обработчик, чтобы он выводил изображение. Вам не нужно все, это только пример.
Вам также необходимо зарегистрировать обработчик в web.config.
Для ссылки на это Image1.ImageUrl = "handler.ashx? Graphdata = xxxx". Используйте QueryString, чтобы получить источник данных для генерации графика.

0 голосов
/ 05 сентября 2011

Вы можете записать содержимое изображения в ответ 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

Edit: я только что понял, что это может быть не то решение, которое вы ищете; ваш веб-сервер должен быть в состоянии кэшировать это, хотя.

...