【问题标题】:Save picturebox with labels in it as JPEG in C#在 C# 中将带有标签的图片框保存为 JPEG
【发布时间】:2017-11-28 00:45:11
【问题描述】:

我是 C# 和 Windows 窗体的新手,我想以 JPEG 格式保存带有标签的PictureBox

这是我目前的代码:

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "JPG(*.JPG)|*.jpg";  
if(sfd.ShowDialog() == DialogResult.OK)
{
    pictureBox1.Image.Save(sfd.FileName, 
System.Drawing.Imaging.ImageFormat.Jpeg);
}

图片框中有标签,但也没有保存。你有什么想法吗?

【问题讨论】:

  • 我只是在图片框中用鼠标拖动它们,我真的分辨不出来^^
  • 如何将带有标签的图片框保存为一张图片?
  • 将控件添加到PictureBox,然后DrawToBitmap 将在目标位图上绘制这些控件和PictureBoxImage

标签: c# .net winforms picturebox


【解决方案1】:

最简单的选择是将这些标签添加到PictureBox 控件。然后使用DrawToBitmap 可以将这些标签和图像绘制到位图:

var bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(bm, new Rectangle(0,0,pictureBox1.Width, pictureBox1.Height));

然后以您需要的任何格式保存位图。

注意 1:如果不需要,请不要忘记在保存后丢弃位图。

注意 2DrawBitmap 绘制标签,只要您将它们添加到 PictureBoxControls 集合中:

var label1 = new Label() { 
    Text = "Some Text",
    BackColor = Color.Transparent,
    Location = new Point(10, 10)
};
pictureBox1.Controls.Add(label1);

【讨论】:

  • 谢谢,效果很好!当我使用上面之前的代码将位图保存为 jpeg 格式时,图片被截断。
  • 你知道为什么保存时图像会被截断吗?^^ 当我将它移动到表单的中心时,它会变得更加明显
  • 我做了一个更正:pictureBox1.DrawToBitmap(bm, new Rectangle(0,0,pictureBox1.Width, pictureBox1.Height));.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多