C# 如何创建asp.net图表的副本?

C# 如何创建asp.net图表的副本?,c#,asp.net,C#,Asp.net,我目前正在为一家公司设计一个基于web的(asp.net/C#)卷跟踪工具,用于报告和呈现卷数据。用户呈现数据的一种方法是使用图表工具,该工具使用asp.net内置图表。用户可以设置大量不同的过滤选项,以适当地自定义图表,然后将其呈现在同一页面上。关于图表的内容,一切都很正常,但是我创建了一些控件,让用户能够生成更高质量的图形图像,并在单独的窗口中显示它们。使用扩展方法进行响应。重定向我正在将用户重定向到一个新窗口,该窗口包含图表图像的高分辨率版本,如下所示: private void Down

我目前正在为一家公司设计一个基于web的(asp.net/C#)卷跟踪工具,用于报告和呈现卷数据。用户呈现数据的一种方法是使用图表工具,该工具使用asp.net内置图表。用户可以设置大量不同的过滤选项,以适当地自定义图表,然后将其呈现在同一页面上。关于图表的内容,一切都很正常,但是我创建了一些控件,让用户能够生成更高质量的图形图像,并在单独的窗口中显示它们。使用扩展方法进行响应。重定向我正在将用户重定向到一个新窗口,该窗口包含图表图像的高分辨率版本,如下所示:

private void DownloadImage(int width, int height)
    {
        double scale = width / ViewGraphChart.Width.Value;

        // Resize chart:
        ViewGraphChart.Width = width;
        ViewGraphChart.Height = height;

        // Resize titles:
        foreach (Title t in ViewGraphChart.Titles)
        {
            t.Font = new Font(t.Font.FontFamily, (float)(t.Font.Size * scale), FontStyle.Regular);
        }

        // Resize legends:
        foreach (Legend l in ViewGraphChart.Legends)
        {
            l.Font = new Font(l.Font.FontFamily, (float)(l.Font.Size * scale), FontStyle.Regular);
        }

        UpdateChart();

        // Open image in new window:
        Response.Redirect(ViewGraphChart.CurrentImageLocation, "_blank", "");
    }
到目前为止还不错,一个新窗口打开了,用户得到了一张高分辨率的图表图像。然而,问题是,工具中的图表也会自然地被修改,显然变得太大,无法正确地放入布局中。我试图通过在重定向后立即重置图表属性来解决这个问题,但是这使得“HD”图表图像在工具内显示为相同的小图表图像。因此,我认为最好的方法是制作图表的副本,修改副本并将其交给用户,而原始图像在工具中保持其小尺寸。考虑到我有大量的数据绑定和其他与我的图表相关的东西,有没有简单的方法可以做到这一点,或者有其他方法可以做到这一点

我有点赶时间,所以如果这件事说得不清楚,请告诉我,我会更详细地解释

问候,, 赌注

编辑:

Response.Redirect扩展方法背后的代码。如果我没记错的话,是从这一页借来的

    public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures) 
    { 
        if 
            ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) 
            && String.IsNullOrEmpty(windowFeatures)) 
        {
            response.Redirect(url); 
        }
        else
        {
            Page page = (Page)HttpContext.Current.Handler;

            url = page.ResolveClientUrl(url); string script;

            if (!String.IsNullOrEmpty(windowFeatures))
            {
                script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
            }
            else
            {
                script = @"window.open(""{0}"", ""{1}"");";
            }

            script = String.Format(script, url, target, windowFeatures);
            ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
        } 
    } 

@KnaperKrisp…查看响应会很有帮助。重定向扩展方法codecutely!我已经编辑了我的帖子并添加了代码。