如何在c#窗口窗体的面板上存储并显示以前绘制的形状

如何在c#窗口窗体的面板上存储并显示以前绘制的形状,c#,json,visual-studio,winforms,.net-core,C#,Json,Visual Studio,Winforms,.net Core,我正在做一个项目,在这个项目中,我让用户绘制一些形状并保存整个绘图面板(c#window form),以便他们以后可以打开面板来编辑他们的绘图 我正在考虑将所有其他内容(如图形的名称和类型)保存在json文件中 但不知道如何保存绘制的形状,更重要的是如何再次显示它们 [] 白色面板用于绘图。(我要保存的零件) 新村-清除所有图纸 保存村庄-保存在白色部分上绘制的所有形状 Open village可打开以前存储的已绘制形状状态 绘图方法 g= drawing_panel.CreateGraphic

我正在做一个项目,在这个项目中,我让用户绘制一些形状并保存整个绘图面板(c#window form),以便他们以后可以打开面板来编辑他们的绘图

我正在考虑将所有其他内容(如图形的名称和类型)保存在json文件中 但不知道如何保存绘制的形状,更重要的是如何再次显示它们

[]

白色面板用于绘图。(我要保存的零件)

新村-清除所有图纸

保存村庄-保存在白色部分上绘制的所有形状

Open village可打开以前存储的已绘制形状状态

绘图方法

g= drawing_panel.CreateGraphics();
        village_name.Text = "Okay";
        pr.setName(village_name,drawing_panel);
        
        Pen p = new Pen(Color.Black);
        g.DrawEllipse(p, 10, 10, 100, 100);
        g.DrawLine(p, 150, 150, 300, 300);
   BlogSites bsObj = new BlogSites()
        {
            Name = "C-sharpcorner",
            Description = "Share Knowledge"
  
        };

        // Convert BlogSites object to JOSN string format  
        string jsonData = JsonConvert.SerializeObject(bsObj);
序列化方法

g= drawing_panel.CreateGraphics();
        village_name.Text = "Okay";
        pr.setName(village_name,drawing_panel);
        
        Pen p = new Pen(Color.Black);
        g.DrawEllipse(p, 10, 10, 100, 100);
        g.DrawLine(p, 150, 150, 300, 300);
   BlogSites bsObj = new BlogSites()
        {
            Name = "C-sharpcorner",
            Description = "Share Knowledge"
  
        };

        // Convert BlogSites object to JOSN string format  
        string jsonData = JsonConvert.SerializeObject(bsObj);

如果使用类对象来描述用户可以绘制的形状,则序列化这些对象不会有问题。您应该展示如何生成、绘制和存储形状。对二进制序列化和命令模式进行一些研究。这将是有用的。正如@Jimi所说,如果没有generate&draw的代码,我们将无法进一步帮助您。这已经是一个灾难性的错误(拜托,这太夸张了!)。了解如何使用
Paint
事件处理程序(或
OnPaint()
methodoverride)
PaintEventargs
对象绘制。它提供用于在设备上下文上绘制的
e.Graphics
对象。在未正确设置此部件之前,请不要再继续您需要处理描述您的形状的对象(类、模型,无论您称之为什么中间结构)。将
e.Graphics
传递给在该图形上下文中绘制特定形状的公共方法。+您确定此处使用.Net Core吗?您似乎还试图使用Json.Net而不是System.Text.Json。如果您有Visual Studio 2019,并且使用.Net Core构建了WinForms项目,请暂时切换到.Net Framework。@Jimi
System.Text.Json
可以,但问题代码与此无关。看起来有
Newtonsoft.Json
在使用中。NETCore3.1也比几乎过时的.NETFramework4.x有更多的功能。毫无理由的坏建议。