如何在 C# 中以毫米而不是像素设置 MS 图表的大小

How to set the size of MS chart in millimetre instead of pixel in C#

我正在尝试使用以下代码在 C# 中以毫米为单位设置图表对象的大小:

var chart = new Chart();
chart.RenderingDpiX = 300;
chart.RenderingDpiY = 300;
chart.CreateGraphics().PageUnit = GraphicsUnit.Millimeter;
chart.Size = new Size(290, 200); // meant to be 290 millimetre not pixel
...
chart.SaveImage(@"D:\Temp\tttt.png", ChartImageFormat.Png);

我希望保存的图像大小约为 290 * (300/254) = 3425 像素,而图像大小为 290 x 200 像素?

我还尝试使用

在 postPaint 事件中设置页面单位
private void ChartPostPaint(object sender, ChartPaintEventArgs e)
{
  var g = e.ChartGraphics.Graphics;
  g.PageUnit = GraphicsUnit.Millimeter;
} 

但这也不行!您能帮我设置图表的尺寸(以毫米或英寸为单位而不是以像素为单位吗?

Chart() 的文档来看,默认的度量单位似乎是 px
但是,您可以使用 px 作为方法的输入,该方法可以为您提供 mm.
上的值 为此,您可以这样写:

private double toMM(int _px)
{
    return this._px*(300/254);
}

所以,现在你会有这样的东西:

chart.Size = new Size(toMM(290), toMM(200));