【问题标题】:How to adjust axis scales for datavisualization.charting after resizing a chart?调整图表大小后如何调整 datavisualization.charting 的轴比例?
【发布时间】:2014-09-15 18:06:44
【问题描述】:

我将图表从本质上是 72dpi 更新为 300dpi。这是因为我正在使用 itextsharp 将图像添加到我的 pdf 并且质量很差。所以我将图像的大小增加了 3 倍,图像看起来确实更好,但问题就在这里。

DPI 增加了,但细节变得非常难以看到。

原始图表图像

重构的图表图像

代码

这就是我调整图表大小的方式。

private static System.Drawing.Bitmap GetChartBitmap()
        {


            System.Drawing.Rectangle targetBounds = new System.Drawing.Rectangle(0, 0, chart_runs.Width, chart_runs.Height);
            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(targetBounds.Width, targetBounds.Height);
            bitmap.SetResolution(1000, 1000);
            chart_runs.DrawToBitmap(bitmap, targetBounds);
            bitmap.Save(@"C:\Temp\OriginalChartImage.bmp");


            System.Drawing.Bitmap bitmap3 = new System.Drawing.Bitmap(1650, 990);
            bitmap3.SetResolution(300, 300);
            chart_runs.DrawToBitmap(bitmap3, new System.Drawing.Rectangle(0, 0, 1650, 990));
            bitmap3.Save(@"C:\Temp\RefactoredChartImage.png");



            //This stuff below is for my code elsewhere. Using bitmap3 to be added to pdf. 
            //chart_runs.DrawToBitmap(bitmap, targetBounds);
            string path = System.IO.Path.GetTempPath();

            bitmap1.Save(path + @"\Image.png");
            return bitmap1;
        }

我查看了 Microsoft msdn 示例,但没有找到任何解决我问题的方法。也就是说,我怎样才能增加标签的大小,以便人们可以再次阅读它们。或者,我有没有办法增加 DPI 并保持与第一张图片中使用的标签 x 和标签 y 比例相同?也就是说,有更大的图像和 300DPI,但按 20 的比例缩放 0 到 300 而不是像我重构的图片那样的 5?

尝试修复

  • 缩放轴?见here。我不认为这是正确的。这里没有太大的成功。
  • 一直试图在 Chart 类中找到一种方法来查看是否有一种方法可以指定严格的比例。 (y 尺度上为 20 秒,x 尺度上为 15 秒)。
  • 大多数在线资源都乐于增加图片的比例并走开。像这样的事情here.

我将不胜感激任何帮助和帮助。

【问题讨论】:

    标签: c# image charts scale data-visualization


    【解决方案1】:

    几个不同的问题,有几个不同的答案。最简单的方法是将轴标签的字体大小更改为更大。这可以通过

    chart1.ChartAreas[0].AxisX.LabelStyle.Font = new Font...;
    

    如果不这样做,无论您做什么其他操作,您的标签都将无法读取,这仅仅是因为您更改了 DPI(这正是更改 DPI 所做的事情)。

    如果您希望在 y 轴上每 20 个单位显示一次标签,在 x 上每 15 个单位显示一次,您可以使用轴的 IntervalIntervalType 属性。 IntervalType 在显示 DateTime 对象时使用:

    chart1.ChartAreas[0].AxisX.Interval = 15;
    chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Seconds;
    chart1.ChartAreas[0].AxisY.Interval = 20;
    

    您关于缩放轴的第一个链接本质上是放大或缩小,这就是您没有成功的原因。

    【讨论】:

    • 我可能会声称我最终会弄清楚这一点,但只是在浪费了潜在的惊人时间之后。谢谢你把我从沟里救出来,让我回到路上。
    猜你喜欢
    • 2017-09-04
    • 2011-09-20
    • 2011-07-15
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多