1

ビュータイプがLargeIconのListViewがあります。ListViewはLargeImageListを割り当てました。割り当てられたImageListのImageSizeは200x200です。ImageListに追加される画像のサイズが、200x200のImageListサイズと一致しません。幅や高さを小さくすることができます。どちらの場合も、画像を中央に配置する必要があります。つまり、Winforms.LabelクラスのMiddleCenterプロパティです。

4

1 に答える 1

3

ImageListは、ImageSizeに合うように画像のサイズを変更します。画像を元のサイズで中央に配置するには、目的のプロパティを使用して新しい画像を作成する必要があります。これを行うためのサンプルコード(テストされていない):

public static void AddCenteredImage(ImageList list, Image image) {
    using (var bmp = new Bitmap(list.ImageSize.Width, list.ImageSize.Height))
    using (var gr = Graphics.FromImage(bmp)) {
        gr.Clear(Color.Transparent);   // Change background if necessary
        var size = image.Size;
        if (size.Width > list.ImageSize.Width || size.Height > list.ImageSize.Height) {
            // Image too large, rescale to fit the image list
            double wratio = list.ImageSize.Width / size.Width;
            double hratio = list.ImageSize.Height / size.Height;
            double ratio = Math.Min(wratio, hratio);
            size = new Size((int)(ratio * size.Width), (int)(ratio * size.Height));
        }
        var rc = new Rectangle(
            (list.ImageSize.Width - size.Width) / 2,
            (list.ImageSize.Height - size.Height) / 2,
            size.Width, size.Height);
        gr.DrawImage(image, rc);
        list.Images.Add(bmp);
    }
}
于 2012-08-22T13:04:37.620 に答える