在GDI+中发生了一个通用错误
本文关键字:一个 错误 GDI+ 发生了 | 更新日期: 2023-09-27 18:06:42
我正在开发一个图像合并项目。(图像组合)第一张前景图像位于背景图像的(0,0)位置。通过使用数字上下控制来改变位置。代码在
下面private void nudXPositions_ValueChanged(object sender, EventArgs e)
{
{
lock (typeof(FrmImageMerge))
{
nudXPositions.Maximum = imgBackWidth;
if (pbMergeImagePreview.Image != null)
pbMergeImagePreview.Image.Dispose();
pbMergeImagePreview.InitialImage = null;
posX = decimal.ToInt16(nudXPositions.Value);
posY = decimal.ToInt16(nudYPosition.Value);
MergeImages(tbxBackImage.Text, tbxForeImage.Text);
lblMergeImagePreview.Text = "";
pbBackgroundImagePreview.Refresh();
try
{
Thread.Sleep(100);
Image image1 = Image.FromFile(tempName);
this.pbMergeImagePreview.Image = image1;
pbBackgroundImagePreview.Refresh();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
btnSaveImageAs.Enabled = true;
}
}
}
则调用MergeImage()方法。该方法在
下面 private void MergeImages(string ImageBack,string ImageFore)
{
pbMergeImagePreview.Image = null;
pbMergeImagePreview.Refresh();
// try
//{
backExtension = Path.GetExtension(tbxBackImage.Text);
System.Drawing.Graphics myGraphic = null;
Image imgB;
imgB = Image.FromFile(ImageBack);
Image imgF;
imgF = Image.FromFile(ImageFore);
Image m;
m = Image.FromFile(ImageBack);
myGraphic = System.Drawing.Graphics.FromImage(m);
myGraphic.DrawImageUnscaled(imgB,0,0);
myGraphic.DrawImageUnscaled(imgF,posX,posY);
myGraphic.Save();
getMyDocument = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
tempName = string.Format("{0}{1}{2}{3}{4}{5}",getMyDocument,"''","Merge Image","''","Imageback",backExtension);
if (File.Exists(tempName))
{
File.Delete(tempName);
}
m.Save(tempName);
imgB.Dispose();
imgF.Dispose();
m.Dispose();
myGraphic.Dispose();
//}
//catch (Exception ex)
// {
// MessageBox.Show(ex.Message);
//}
}
程序执行时,改变位置时,前像根据位置变化。它被保存为一个临时图像。然后,如果我们再次改变位置临时图像被重新创建,它取代旧的图像。但是当我做这个过程一段时间后,会有一个例外;" externalexception has Occurred"。此外,这是一个"在GDI+中发生的通用错误"。我试了很多,搜索浏览器。如果我不能解决我的问题。谢谢你
GDI+中的通用错误是一个可怕的错误,因为它没有给出发生错误的信息。
然而,一个常见的原因是从文件中加载位图会使文件保持打开状态,因此任何后续打开它的尝试都会导致Access Denied
参见以下相关答案:
GDI+
中出现了一个通用错误-通用GDI+ Error
只要在StackOverflow中搜索"Generic Error GDI+",你会发现相当多的点击。