Winforms 使用ListView所有者绘制的DrawItem与LargeIcon ImageSize的大小不同

Winforms 使用ListView所有者绘制的DrawItem与LargeIcon ImageSize的大小不同,winforms,listview,Winforms,Listview,我在LargeIcon视图模式下使用ListView来显示ImageList中的图像列表。我不希望绘制标签或子项,因此我使用OwnerDraw和DrawItem事件。但是,我似乎无法使项目大小与图像大小匹配 我已经尝试过调整ImageList的大小,以及我存储在列表中的图像的大小,虽然它确实改变了ListView中每个项目的大小,但在图像周围仍然有“额外的空间”,我无法摆脱 以下是我的DrawItem活动: private void listView\u box\u DrawItem(对象发送方

我在LargeIcon视图模式下使用ListView来显示ImageList中的图像列表。我不希望绘制标签或子项,因此我使用OwnerDraw和DrawItem事件。但是,我似乎无法使项目大小与图像大小匹配

我已经尝试过调整ImageList的大小,以及我存储在列表中的图像的大小,虽然它确实改变了ListView中每个项目的大小,但在图像周围仍然有“额外的空间”,我无法摆脱

以下是我的DrawItem活动:

private void listView\u box\u DrawItem(对象发送方,DrawListViewItemEventArgs e)
{
ListView视图=(ListView)发送方;
e、 DrawDefault=false;
e、 Graphics.DrawImage(view.LargeImageList.Images[e.Item.ImageKey],0,0);
e、 DrawFocusRectangle();
}
我的ImageList ImageSize设置为200x200,并且我构建的要放入该列表的图像是200x200。但以下是项目的绘制方式:

虚线是DrawFocus矩形,表示额外的空间。我猜空间是用来放标签和子项的,即使它们没有被画进去?有没有一种方法可以使用DrawItem覆盖删除这些内容

谢谢你的帮助


编辑:我猜这与ListView.Item上的Bounds的只读属性有关。如果是这样的话,是否没有办法覆盖边界,或者画入边界?

Per@LarsTech,我只是抓住边界矩形,将图像放在该矩形的中心

private void listView\u box\u DrawItem(对象发送方,DrawListViewItemEventArgs e)
{
ListView视图=(ListView)发送方;
e、 DrawDefault=false;
矩形矩形矩形=e.边界;
int width=rect.width,height=rect.height;
int xPad=宽度-图像大小,yPad=高度-图像大小;
e、 Graphics.DrawImage(view.LargeImageList.Images[e.Item.ImageKey],(int)(xPad/2),(int)(yPad)/2);
e、 DrawFocusRectangle();
}

我只想将图像居中。@Larsttech好吧,那很容易。谢谢