You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将System.Web.UI.DataVisualization.Charting图表整体旋转90度?

在System.Web.UI.DataVisualization.Charting中实现图表整体横向(旋转90度)的方案

System.Web.UI.DataVisualization.Charting组件本身没有提供直接旋转整个Chart控件的API,没法在创建完成后一键旋转整个图表。你之前旋转ChartArea没达到预期,是因为ChartArea仅负责内部绘图区域,旋转它只会改动坐标轴和数据的方向,但图表的标题、图例、整体控件尺寸等元素不会同步旋转,自然达不到整体横向的效果。

下面是两个可行的解决思路:

方案一:创建时调整布局与坐标轴(推荐)

这是最稳妥的方式,无需后续图像处理,也不会出现尺寸异常问题,本质是通过调整数据和坐标轴设置,让图表原生呈现横向效果:

  • 若为柱状/条形图:直接将Series.ChartType从Column改为Bar,图表会自动切换为横向显示,无需额外调整数据。
  • 若为折线图、散点图等无固定方向的图表:
    1. 交换X、Y轴数据:把原本的series.Points.AddXY(xValue, yValue)改为series.Points.AddXY(yValue, xValue);
    2. 同步调整坐标轴的标题与标签:将原X轴的标题移至Y轴,原Y轴的标题移至X轴,同时调整轴的LabelStyle、Title属性;
    3. (可选)根据数据逻辑,设置ChartArea.AxisX.IsReversed或AxisY.IsReversed来适配显示方向。

示例代码片段:

var series = chart.Series.Add("MySeries");
series.ChartType = SeriesChartType.Line;

// 交换XY轴数据
foreach (var data in dataSource)
{
    series.Points.AddXY(data.YValue, data.XValue);
}

// 调整坐标轴标题
chart.ChartAreas[0].AxisX.Title = "原Y轴标题";
chart.ChartAreas[0].AxisY.Title = "原X轴标题";

方案二:处理渲染后的图像并修正尺寸

如果必须在图表创建完成后再旋转,只能处理渲染后的图像,但需要手动修正尺寸问题:
你之前旋转PNG后尺寸异常变大,是因为旋转90度后图像的宽高会互换,若直接使用会导致PDF布局异常。解决办法是旋转后重新定义图像尺寸:

using (var ms = new MemoryStream())
{
    // 将图表渲染为图像
    chart.SaveImage(ms, ChartImageFormat.Png);
    ms.Position = 0;
    
    using (var originalImage = Image.FromStream(ms))
    {
        // 执行旋转
        originalImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
        
        // 创建新Bitmap,设置为旋转后的正确尺寸(原高为宽,原宽为高)
        using (var rotatedImage = new Bitmap(originalImage.Height, originalImage.Width))
        {
            rotatedImage.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution);
            
            using (var g = Graphics.FromImage(rotatedImage))
            {
                // 将旋转后的图像绘制到新Bitmap中
                g.DrawImage(originalImage, new Rectangle(0, 0, rotatedImage.Width, rotatedImage.Height));
            }
            
            // 此时rotatedImage为尺寸正常的横向图像,可直接渲染到PDF
            // 此处添加你的PDF写入逻辑
        }
    }
}

内容的提问来源于stack exchange,提问作者gisWeeper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:16:06