如何显示图像在datagridview缩略图

本文关键字:datagridview 略图 图像 何显示 显示 | 更新日期: 2023-09-27 18:09:33

我有一个windows application form,我需要显示图像thumbnailsdatagridview

在SQL Server 2005中以二进制数据的形式存储。

是否有任何方法显示图像的thumbnails而不将图像作为文件存储在磁盘上。

请尽快回复

如何显示图像在datagridview缩略图

只需添加一个datagridviewimage列,设置列的宽度和设置数据源,然后循环遍历每一行并设置行高。

<标题> 例子
dgvEmpInfo.DataSource = ds.Tables[0];
       foreach (DataGridViewRow dgvRow in dgvEmpInfo.Rows)
       {
           dgvRow.Height = 100;
       }

是。我假设您将图像存储在一个字节数组中:

byte[] bArray = GetRawImageBytes();
// Get an image object from the byte-array
Image ddbImage;
using (var ms = new MemoryStream(bArray, 0, bArray.Length))
{
    ms.Write(bArray, 0, bArray.Length);
    ddbImage = Image.FromStream(ms, true);
}
// Create a 100x100 thumbnail from the image
var ThumbnailSize = new Size(100, 100);
var thumb = ddbImage.GetThumbnailImage(
            ThumbnailSize.Height, 
            ThumbnailSize.Width, 
            null, IntPtr.Zero);
// Create an image column for the datagridview
var imgColumn = new DataGridViewImageColumn
{
    HeaderText = "Image", 
    Name = "img"
};
dataGridView1.Columns.Add(imgColumn);
// Add the first row, using this image
dataGridView1.Rows.Add();
dataGridView1.Rows[0].Cells[0].Value = thumb;
// lets set the gridview-height to the thumbnail height
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    row.Height = ThumbnailSize.Height;
}

Edit:方便剪切&粘贴测试代码,下面是一个虚拟函数,它将返回存储在磁盘上的图像的字节数组:

private byte[] GetRawImageBytes()
{
    var img = Image.FromFile(PATH_TO_TEST_IMAGE);
    byte[] bArray;
    using (var ms = new MemoryStream())
    {
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        bArray = ms.GetBuffer();
    }
    return bArray;
}