【发布时间】:2020-01-14 14:07:55
【问题描述】:
我在 LargeIcon 视图模式下使用 ListView 来显示 ImageList 中的图像列表。我不想绘制标签或子项,所以我使用 OwnerDraw 和 DrawItem 事件。但是,我似乎无法使项目大小与图像大小相匹配。
我已经尝试调整 ImageList 的大小,以及我存储在列表中的图像,虽然它确实改变了 ListView 中每个项目的大小,但仍然在图像周围绘制了“额外空间”我无法摆脱。
这是我的 DrawItem 事件:
private void listView_Boxes_DrawItem(object sender, DrawListViewItemEventArgs e)
{
ListView view = (ListView)sender;
e.DrawDefault = false;
e.Graphics.DrawImage(view.LargeImageList.Images[e.Item.ImageKey], 0, 0);
e.DrawFocusRectangle();
}
我的 ImageList ImageSize 设置为 200x200,我正在构建的要放入该列表的图像是 200x200。但这里是项目被绘制的样子:
虚线是 DrawFocusRectangle,表示多余的空间。我猜这个空间是用于标签和子项的,即使它们没有被绘制?有没有办法使用 DrawItem 覆盖删除那些?
感谢您的帮助!
编辑:我猜它与 ListView.Item 上 Bounds 的只读属性有关。如果是这样,有没有办法覆盖边界,或者画到边界?
【问题讨论】:
-
我只是将图像居中。
-
@LarsTech 嗯,这很容易。谢谢!