如何显示图像在datagridview缩略图
本文关键字:datagridview 略图 图像 何显示 显示 | 更新日期: 2023-09-27 18:09:33
我有一个windows application form
,我需要显示图像thumbnails
在datagridview
。
在SQL Server 2005中以二进制数据的形式存储。
是否有任何方法显示图像的thumbnails
而不将图像作为文件存储在磁盘上。
请尽快回复
只需添加一个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;
}