1

我有一个ListViewwithView属性设置为LargeIcon. 我有一个ImageList图像源ListView

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

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

4

2 回答 2

0

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

看看我创建的这两个图像作为示例。

这是原始的 64x64 图像文件

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

这是具有大量透明区域的 200x200 图像文件

于 2011-12-03T19:35:41.423 回答
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;

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

于 2014-11-05T06:48:31.777 回答