C# Windows窗体应用程序将字符串转换为画布图形
以下内容都是c#: 我使用各种图形方法在画布(LevelPanel)上绘制,然后将其保存到XML文件中。我通过将其转换为字符串来实现:C# Windows窗体应用程序将字符串转换为画布图形,c#,xml,canvas,windows-forms-designer,C#,Xml,Canvas,Windows Forms Designer,以下内容都是c#: 我使用各种图形方法在画布(LevelPanel)上绘制,然后将其保存到XML文件中。我通过将其转换为字符串来实现: private void Save_Click(object sender, EventArgs e) { string filename = FileNameBox.Text; Bitmap bmp = new Bitmap(LevelPanel.Width, LevelPanel.Height);
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文件的其他方法。如果您只是使用
file.writealText(“somefile.xml”,picString)保存xml代码>
像这样阅读xml
string base64String = File.ReadAllText("somefile.xml");
读取XML文件后,可以通过调用此方法将其转换回图像
public static Image ImageFromBase64String(string base64String)
{
byte[] imageBytes = Convert.FromBase64String(base64String);
using (MemoryStream ms = new MemoryStream(imageBytes))
{
return new Bitmap(Image.FromStream(ms, true));
}
}
谢谢将其加载回面板会导致系统内存不足,我使用的是LevelPanel.BackgroundImage=Image。编译得和以前一样好。有什么想法吗?更新了这一行的答案返回新位图(Image.FromStream(ms,true))代码>。但是内存不足是很奇怪的,除非你正在处理大型图像,不要忘记在使用完图像后处理它们。是的,我忘了处理它们。但如果在加载后立即使用.dispose(),则我不确定将dispose命令放在何处。它会给我以下错误:System.Drawing.dll中发生类型为“System.ArgumentException”的未处理异常,并表示该参数无效。