winforms 从图表控件保存图像

yqhsw0fo  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(134)

我有一个图表控件,我想保存图表后,它是绘制。我有一个问题,可能是在路径,我想保存图像,但我不确定。
代码如下:

string dir = $"{System.IO.Directory.GetCurrentDirectory()}\\Charts\\{DateTime.Now.ToString()}.png";
chart1.SaveImage(dir, ChartImageFormat.Png);

此目录为:“C:\Users\Hendawi\Desktop\ESI-USB-API\Examples\C#\bin\Debug\Charts\2023-04-03 5:18:41 PM.png”
我得到的错误是:System.NotSupportedException:'不支持给定路径的格式。'
例如,如果我尝试将文件保存在桌面上,它就可以工作。我不知道我的路径有什么问题。
编辑(已解决):由于在Windows中命名文件时不支持在Datetime.Now()中生成的@ DanielA. White. Colons

omtl5h9j

omtl5h9j1#

默认情况下使用DateTime.ToString()可能会在文件名中包含无效字符(取决于您的区域设置),如'/'和':'。
通常,您会在String.Format()String interpolation中使用Standard date and time format stringCustom date and time format string,以使用当前日期来构造兼容的文件名:

string dir = $"{System.IO.Directory.GetCurrentDirectory()}\\Charts\\{DateTime.Now:yyyyMMdd_HHmmss}.png";
chart1.SaveImage(dir, ChartImageFormat.Png);

这将导致

"C:\Users\Hendawi\Desktop\ESI-USB-API\Examples\C#\bin\Debug\Charts\20230403_171841.png"
8yparm6h

8yparm6h2#

典型的DateTime.Now.ToString()在时间格式中包含冒号/正斜杠。例如:4/3/2023 3:35:45 PM这不是一个valid file name
你可以很容易地编写一个扩展来支持文件友好的日期时间:

public static string ToFileNameFriendly(this DateTime val)
        {
            return $"{val.Year}_{val.Month}_{val.Day}_{val.Hour}_{val.Minute}_{val.Second}_{val.Millisecond}";
        }

相关问题