【问题标题】:How to save and load in panel?如何在面板中保存和加载?
【发布时间】:2013-05-04 14:18:39
【问题描述】:

我想将图像从面板保存到位图,然后我想在表单退出最小化模式后加载保存的图像。

Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(@"C:\Test");
panel1.BackgroundImage = Image.FromFile(@"C:\Test");

我应该使用什么事件来最小化事件? 附言我是 C# 初学者。

【问题讨论】:

  • 字里行间,当您最小化和恢复您的表单时,您的图像似乎“丢失”了?我猜您可能已经使用 CreateGraphics() 进行绘图。在 Panel 的 Paint() 事件中使用“e.Graphics”,并存储有关在类级别绘制什么的数据,以便在恢复表单时自动重绘。如果您向我们展示您最初是如何创建绘图的,那么我们可以帮助您修复它。

标签: c# bitmap panel bitmapimage


【解决方案1】:

已编辑

绘制面板的内容。这应该在其 Paint 事件处理程序中完成,如下所示:

private void panel1_Paint(object sender, PaintEventArgs e)
{
    using (Pen p = new Pen(Color.Red, 3))
    {
        // get the panel's Graphics instance
        Graphics gr = e.Graphics;

        // draw to panel
        gr.DrawLine(p, new Point(30, 30), new Point(80, 120));
        gr.DrawEllipse(p, 30, 30, 80, 120);
    }
}

将面板的内容保存为图像。这部分应该在其他地方完成(例如,当您单击“保存”按钮时):

private void saveButton_Click(object sender, EventArgs e)
{
     int width = panel1.Size.Width;
     int height = panel1.Size.Height;

     using (Bitmap bmp = new Bitmap(width, height))
     {
         panel1.DrawToBitmap(bmp, new Rectangle(0, 0, width, height));
         bmp.Save(@"C:\testBitmap.jpeg", ImageFormat.Jpeg);
     }
}

【讨论】:

  • 谢谢,但我只得到一个白色背景图像,我没有得到我使用 e.drawline() 绘制的图形
  • 这就是我想要做的我不想使用 onpaint 方法重绘我的观点我只想用我用鼠标完成的绘图保存面板,然后我可以加载保存的图像加载按钮,我面临的问题是保存..我不想使用 onpaint 方法
  • @HussainHalai 查看我的更新答案,如果它可以帮助您接受它!
  • 感谢您的方法有帮助,但我可以使用 void panel1_paint 的 method() 绘制图像/图形
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多