GDI+ 中发生一般性错误。

博帕尔2019 2014-01-22 09:08:06
GDI+ 中发生一般性错误。

private void button2_Click(object sender, EventArgs e)
{
string str = "";
Panel panel = new Panel();
panel.Parent = PanelBack;
//foreach (Control C in PanelBack.Controls)
//{
// if (C is Panel)
// {
// str = C.Name;
// }
//}


//string sqlQueryFloorInfo = string.Format("select SFloorName,SFloorText,SBuildingText,SWidth,SHeight,SImageData from TB_FloorInfo, TB_BuildingInfo where TB_FloorInfo.SBuildingName = TB_BuildingInfo.SBuildingName and TB_FloorInfo.SFloorName='" + C.Name.Trim() + "'");


DBOperateClass DBOperate = new DBOperateClass();
DataSet dsFloorInfo = new DataSet();

string sqlQueryFloorInfo = sqlQueryFloorInfo = string.Format("select SFloorName,SFloorText,SBuildingText,SWidth,SHeight,SImageData from TB_FloorInfo, TB_BuildingInfo where TB_FloorInfo.SBuildingName = TB_BuildingInfo.SBuildingName and TB_FloorInfo.SFloorName= 'Floor140122051103453'");
dsFloorInfo = DBOperate.GetDataFromDB(DBOperate.ServerName, DBOperate.DatabaseName, DBOperate.UidName, DBOperate.PwdName, sqlQueryFloorInfo);
Image image = GetImageFromBytes(HexStringToByteArray(dsFloorInfo.Tables[0].Rows[0]["SImageData"].ToString()));
dsFloorInfo.Dispose();
DBOperate = null;
GC.Collect();
//Image image = Image.FromFile(@"C:\1001001000161.png");
pictureBox1.Image = image;
//image.Save(@"C:\100100100016.png");

//C.Width = image.Width;
//C.Height = image.Height;
//C.BackgroundImage = image;
//image.Dispose();
pictureBox1.Image.Save(@"C:\100100100016.png");
//GDI+ 中发生一般性错误。

//PanelBack.Width = image.Width;
//PanelBack.Height = image.Height;
//PanelBack.BackgroundImage = pictureBox1.Image;


}


在线等!~
...全文
6797 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
s290305915 2016-05-09
  • 打赏
  • 举报
回复
要在释放对象前执行保存操作
博帕尔2019 2014-03-08
  • 打赏
  • 举报
回复
System.Drawing.Image img = System.Drawing.Image.FromFile(path); System.Drawing.Image image = new System.Drawing.Bitmap(img); img.Dispose(); panel1.BackgroundImage = image; 改成这样就可以了,谢谢众位兄台的热心帮助哦!~
youzelin 2014-01-23
  • 打赏
  • 举报
回复
这样试试:将 picturebox 的 image copy 到 Bitmap 对象上,然后 save 这个 Bitmap 对象。
  • 打赏
  • 举报
回复
pictureBox1.Image.Save(@"C:\100100100016.png");
改为
image.Save(@"C:\100100100016.png")
智商余额不足 2014-01-23
  • 打赏
  • 举报
回复
路径保存在同一个位置(覆盖源文件)会发生这个异常,msdn有说
宝_爸 2014-01-23
  • 打赏
  • 举报
回复
PictrueBox还在用Image 试下下面的代码 using (Bitmap bmp = new Bitmap(PictureBox1.Image)) { bmp.Save(@"C:\100100100016.png", ImageFormat.PNG) }
博帕尔2019 2014-01-22
  • 打赏
  • 举报
回复
求大神指点啦!~
博帕尔2019 2014-01-22
  • 打赏
  • 举报
回复
private void button3_Click(object sender, EventArgs e) { DBOperateClass DBOperate = new DBOperateClass(); DataSet dsFloorInfo = new DataSet(); string sqlQueryFloorInfo = sqlQueryFloorInfo = string.Format("select SFloorName,SFloorText,SBuildingText,SWidth,SHeight,SImageData from TB_FloorInfo, TB_BuildingInfo where TB_FloorInfo.SBuildingName = TB_BuildingInfo.SBuildingName and TB_FloorInfo.SFloorName= 'Floor140122051103453'"); dsFloorInfo = DBOperate.GetDataFromDB(DBOperate.ServerName, DBOperate.DatabaseName, DBOperate.UidName, DBOperate.PwdName, sqlQueryFloorInfo); Image image = GetImageFromBytes(HexStringToByteArray(dsFloorInfo.Tables[0].Rows[0]["SImageData"].ToString())); pictureBox1.Image = image; //正常将图片显示在界面上 PanelBack.BackgroundImage = image; //没有报错 } //但函数执行完后,就出现了内存不足的情况
博帕尔2019 2014-01-22
  • 打赏
  • 举报
回复
从数据库中读取图片后,能够放到 pictureBox1中且能显示出来,为什么保存的时候却报错啦 错误提示为:“GDI+ 中发生一般性错误。” 还有 “未处理ExternalException” 求解啦,纠结几个小时了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧