Отображение растрового изображения в dataGridView с использованием C # - PullRequest
4 голосов
/ 11 июня 2011

Я хочу показать в dataGridView какое-то изображение. У меня есть два компонента, dataGridView, dataTable и один Bitmap. DataTable имеет две колонки.

dataGridview.source = dataTable;

Теперь я хочу показать в dataGridView три столбца, два из dataTable и новый третий с моим растровым изображением. Если это проще, я могу изменить dataTable и dataGridView.

Можно ли это сделать?

Ответы [ 2 ]

3 голосов
/ 11 июня 2011

Есть несколько способов приблизиться к этому.

Существует тип столбца изображения для 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 .


Другой вариант - добавить ваше изображение в таблицу данных - это автоматически сгенерирует ваш столбец изображения, но новый столбец в таблице данных должен иметь типмассив байтов.

Я нашел следующий код, чтобы сделать это с быстрым Google:

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

Если вы выберете этот подход, я бы предложил провести небольшое исследование, чтобы найти лучший методсоздания байтового массива - я не могу поручиться за то, чтобы этот код был лучшим.

2 голосов
/ 15 марта 2012

Просто создайте таблицу данных с колонкой изображений и добавьте к ней изображение

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

Загрузить полный код на http://tablegridview.blogspot.in

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...