2014-06-21 56 views

回答

1

通过每一行循环,并设置行的高度后只需添加列,并设置数据源的datagridviewimage列设定宽度。

dgvEmpInfo.DataSource = ds.Tables[0]; 

     foreach (DataGridViewRow dgvRow in dgvEmpInfo.Rows) 
     { 
      dgvRow.Height = 100; 
     } 
1

Yes.I'll假设你有存储在一个字节数组中的图像:

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; 
} 

编辑:为了测试方便切&粘贴代码,这里是一个虚函数会返回一个字节存储在磁盘上的图像的-array:

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; 
} 
+0

是的,它的工作but.I有一个简单的解决方案。只需添加一个datagridviewimage列,并设置列的宽度。并设置数据源循环通过每个datagridview行并设置高度后。就是这样。 –