nirmus
nirmus

Reputation: 5093

Showing a bitmap in dataGridView using C#

I want to show in dataGridView some image. I have two components, dataGridView, dataTable and one Bitmap. DataTable has two columns.

dataGridview.source = dataTable;

Now, I want to show in dataGridView three columns, two from dataTable and new third with my bitmap. If it is easier, I can modify dataTable and dataGridView.

Is it possible to do?

Upvotes: 4

Views: 11696

Answers (2)

Sachin
Sachin

Reputation: 19

Simply create datatable with image column and add image to it

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

Download full code at http://tablegridview.blogspot.in

Upvotes: 1

David Hall
David Hall

Reputation: 33143

There are several ways you can approach this.

There is an image column type for the DataGridView, the DataGridViewImageColumn, which has an image property that you can pass a bitmap to.

Something like the following should work:

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

You can also set the Value property of individual cells in this column if needed.

The example above plus a whole lot of other discussion can be found on MSDN.


Another option is to add your image into the datatable - this will automatically generate your image column, but the new column in the datatable needs to be of type byte array.

I found the following code to do this with a quick google:

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

If you do take this approach I'd suggest doing a little research to find the best method of creating the byte array - I couldn't vouch for that code being the best.

Upvotes: 3

Related Questions