-3
以下内容全部来自c#: 我使用各种图形方法在画布上绘制(LevelPanel),然后将其保存到XML文件中。我通过将其转换为一个字符串,这样做的:Windows窗体应用程序将字符串转换为画布图形
private void Save_Click(object sender, EventArgs e)
{
string filename = FileNameBox.Text;
Bitmap bmp = new Bitmap(LevelPanel.Width, LevelPanel.Height);
Graphics g = Graphics.FromImage(bmp);
Rectangle rect = LevelPanel.RectangleToScreen(LevelPanel.ClientRectangle);
g.CopyFromScreen(rect.Location, Point.Empty, LevelPanel.Size);
g.Dispose();
string picString = "";
using (MemoryStream m = new MemoryStream())
{
bmp.Save(m, ImageFormat.Png);
picString = Convert.ToBase64String(m.ToArray());
m.Close();
}
File.WriteAllText(@filename, picString);
}
有什么办法,我可以加载文件(以字符串,并将其转换回图像)。我环顾四周,却找不到任何东西。任何帮助都会感激不尽。如果这是不可能的,任何人都可以建议将图像保存/加载为xml文件的替代方法。
谢谢。加载回面板导致系统内存不足,我正在使用LevelPanel.BackgroundImage = Image。像以前一样编译好。有任何想法吗? – CyberRat
更新了这一行的答案'return new Bitmap(Image.FromStream(ms,true));'。但是,除非您使用大图像,否则内存不足很奇怪,不要忘记在完成使用后丢弃图像。 –
是的,我忘了处理它们。但我不知道在哪里放置dispose命令 - 如果在加载后立即使用.Dispose(),它会给我以下错误:在System.Drawing.dll中发生未处理的类型为“System.ArgumentException”的异常,并说该参数无效。 – CyberRat