使用C#在dataGridView中显示位图

我想在dataGridView中显示一些图像。 我有两个组件,dataGridView,dataTable和一个Bitmap。 DataTable有两列。

dataGridview.source = dataTable; 

现在,我想在dataGridView中显示三列,两列来自dataTable,新的三列来自我的位图。 如果它更容易,我可以修改dataTable和dataGridView。

有可能吗?

有几种方法可以解决这个问题。

DataGridView有一个图像列类型,DataGridViewImageColumn,它有一个可以传递位图的图像属性。

像下面这样的东西应该工作:

 private void createGraphicsColumn(Bitmap image) { DataGridViewImageColumn imageColumn = new DataGridViewImageColumn(); imageColumn.Image = image; imageColumn.Name = "Tree"; imageColumn.HeaderText = "Nice tree"; dataGridView1.Columns.Insert(2, imageColumn); } 

如果需要,您还可以在此列中设置单个单元格的Value属性。

可以在MSDN上找到上面的示例以及许多其他讨论。


另一种选择是将图像添加到数据表中 – 这将自动生成图像列,但数据表中的新列需要是字节数组类型。

我发现以下代码用快速谷歌做到这一点:

 public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } 

如果你采取这种方法,我建议做一些研究,找到创建字节数组的最佳方法 – 我无法保证代码是最好的。

只需使用图像列创建数据表并向其添加图像

 dtMain.Columns.Add("ImageColumn", typeof(Image)); dtMain.Rows.Add(Image.FromFile(photopath + "1.jpg")); 

从http://tablegridview.blogspot.in下载完整代码