大家。我一直在努力使用 Windows 表单将图片加载到 picbox 中,但我在 google 上搜索到的解决方案都不适合我。问题是我将图片路径作为字符串存储到数据库中,例如“C:\Users old ile.jpg”。将路径存储为字符串没有任何问题,但是当我尝试显示它时,我要么收到“内存不足”错误,要么收到“参数无效”错误。
这就是代码:
int rowindex = dgvItems.CurrentCell.RowIndex;
string itemId = dgvItems.Rows[rowindex].Cells[0].Value.ToString();
string query = $"Select PICTURE FROM ITEM WHERE ITEM.ItemId = '{itemId}'";
runConnection =
new SqlConnection(runConfig);
SqlCommand sql = new SqlCommand(
query, runConnection);
runConnection.Open();
SqlDataReader dr = sql.ExecuteReader();
while (dr.Read() == true)
{
picture = dr[0].ToString();
}
dr.Close();
runConnection.Close();
这部分工作得很好,因为当我在 datagriedview 中单击某个项目时,它会选择该项目的当前图片路径。然后将路径存储在图片中。
但是加载时没有任何效果。 picItems.Load(图片); 这里我收到“参数无效”错误;
我也尝试了与 picItems.Image = System.Drawing.Image.FromFile(picture) 相同的代码,但出现内存不足错误。
当我尝试将图片放入调试图中并使用 picItems.Load("filename.jpg") 时,一些图片显示,但许多图片不显示,我再次收到“参数无效”错误。
如果有人有任何可行的解决方案,我将不胜感激。谢谢!
这就是代码:
public void ShowPicture() {
int rowindex = dgvItems.CurrentCell.RowIndex;
string itemId = dgvItems.Rows[rowindex].Cells[0].Value.ToString();
string query = $"Select PICTURE FROM ITEM WHERE ITEM.ItemId = '{itemId}'";
runConnection =
new SqlConnection(runConfig);
SqlCommand sql = new SqlCommand(
query, runConnection);
runConnection.Open();
SqlDataReader dr = sql.ExecuteReader();
while (dr.Read() == true)
{
picture = dr[0].ToString();
}
dr.Close();
runConnection.Close();
FileStream fs = new FileStream(picture, FileMode.Open, FileAccess.Read);
picItems.Image?.Dispose();
using (var image = System.Drawing.Image.FromStream(fs)) - Here's the part I get "parameter not valid" error
{
picItems.Image = new System.Drawing.Bitmap(image);
}
}