WinForms:具有不同图像大小的ListView的ImageList

时间:2011-12-03 03:50:47

标签: c# winforms listview imagelist

我的ListView View属性设置为LargeIcon。我有一个ImageList作为ListView的图片来源。

我想要的是在ListView中显示垂直和水平方向的图像,但ImageList对于其集合中的所有图像只有一个属性ImageSize,例如,如果我设置了属性为150x100并添加垂直图像(100x150)到集合 - ListView自动将其拉伸到150x100。

据我所知,我需要一些ImageList,其中每张图片都以原始大小存储。有关如何做到这一点的任何想法? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我自己也遇到过这个问题,这就是我所做的,我希望它也能帮到你,首先确定你要使用的最大图像尺寸(例如200x200)然后使用Png或Gif图像(所有200x200)透明背景。

看一下我创建的这两个图像作为例子。

this is the original 64x64 image file

但我这样做是为了避免拉伸:

this is the 200x200 image file that have lots of transparent area

答案 1 :(得分:0)

要避免拉伸,可以使用交叉乘法。

  Image Width       Desired Width
 --------------- = ---------------
  Image Height       New Height

  Image Width       New Width
--------------- = ---------------
 Image Height       Desired Height

在代码中它看起来像这样

int height = img.Width*newWidth/image.Height;

int height = img.Width/image.Height*newWidth;

int width = img.Height*newHeight/image.Width;

int width = img.Height/image.Width*newHeight;

然后,在创建新位图时,您可以使用所需大小和派生大小在新位图上绘制缩放图像。