Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将带有标签的picturebox保存为C中的JPEG格式#_C#_.net_Winforms_Picturebox - Fatal编程技术网

C# 将带有标签的picturebox保存为C中的JPEG格式#

C# 将带有标签的picturebox保存为C中的JPEG格式#,c#,.net,winforms,picturebox,C#,.net,Winforms,Picturebox,我不熟悉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.ImageForma

我不熟悉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中有标签,但它们也不会保存。你有什么想法吗?

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

var bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(bm, new Rectangle(0,0,pictureBox1.Width, pictureBox1.Height));
然后以所需的任何格式保存位图

注意1:如果保存后不需要位图,请不要忘记处理它

注意2
DrawBitmap
仅在将标签添加到
图片盒的
控件中时才会绘制标签:

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

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

var bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.DrawToBitmap(bm, new Rectangle(0,0,pictureBox1.Width, pictureBox1.Height));
然后以所需的任何格式保存位图

注意1:如果保存后不需要位图,请不要忘记处理它

注意2
DrawBitmap
仅在将标签添加到
图片盒的
控件中时才会绘制标签:

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

我只是用鼠标在picturebox中拖动了它们,我真的看不出它们之间的区别^^^我如何将顶部带有标签的picturebox保存为一个图像?可能重复添加控件到
picturebox
,然后
DrawToBitmap
将在目标位图上绘制那些控件和
PictureBox
Image
。我刚刚用鼠标在PictureBox中拖动了它们,我真的看不出有什么区别^^^如何将顶部带有标签的picturebox保存为一张图像?可能是将控件添加到
picturebox
中的重复,然后
DrawToBitmap
将在目标位图上绘制这些控件和
picturebox
图像。谢谢,这非常有效!当我用上面的代码以jpeg格式保存位图时,图片会被切断。你知道为什么保存时图像会被切断吗?^当我将其移动到表单中心时,它变得更清晰,我做了一个更正:
pictureBox1.DrawToBitmap(bm,新矩形(0,0,pictureBox1.Width,pictureBox1.Height))。谢谢,效果很好!当我用上面的代码以jpeg格式保存位图时,图片会被切断。你知道为什么保存时图像会被切断吗?^当我将其移动到表单中心时,它变得更清晰,我做了一个更正:
pictureBox1.DrawToBitmap(bm,新矩形(0,0,pictureBox1.Width,pictureBox1.Height))