我有一个DataGridView,它显示员工数据,包括由两个48 x48图像(Status_Active和Status_Inactive)表示的员工状态。我想在DataGridView Image列中以固定大小(例如,16 x16或32 x32)显示这些图像。但是,图像总是显示放大。我已经尝试将ImageLayout设置为Center,但它没有按预期工作。
目前,我正在从数据库中检索雇员列表,并将每个雇员及其相应的状态图标添加到DataGridView中。但是,状态图标看起来比所需的固定大小大。
我的方法:
var employees = db.Employees.ToList();
// Add a row for each employee
foreach (var employee in employees)
{
using (Image statusIcon = employee.IsActive ? Resources.Status_Active : Resources.Status_Inactive)
{
string fullName = employee.LastName + ", " + employee.FirstName;
dgvStatustableau.Rows.Add(fullName, statusIcon);
}
}`
字符串
编辑:
感谢@IVSoftware提出了正确的解决方案。我能够通过创建一个新的位图与16 x16矩形的图标变通。
Bitmap resizedIcon = new Bitmap(16, 16);
using (Graphics g = Graphics.FromImage(resizedIcon))
{
g.DrawImage(statusIcon, new Rectangle(0, 0, 16, 16));
}
型
3条答案
按热度按时间f45qwnt81#
您提到将
ImageMode
设置为Center
,您可能希望使用Stretch
。的数据
我复制了你的帖子,其中两个嵌入的48 x 48图像是表示绑定数据集中的一行的类的一部分,并被强制转换到32 x 32的显示区域:
字符串
主窗体
主表单格式化
DataGridView
,并模拟数据库将在何处读取数据(因为数据库不是问题的一部分)。型
disbfnqx2#
我能够通过调整图标大小来解决这个问题,绘制一个新的位图。
字符串
ruarlubt3#
DataGridViewImageColumn有一个ImageLayout属性,支持Normal、Stretch和Zoom:
根据你的问题,看起来你对Zoom感兴趣。因此,只需分配所需的任何图像,然后将列的ImageLayout属性设置为Zoom。