C#在Winform中用ListView做簡單的圖片瀏覽器

當我們在電腦上打開一個全是圖片的文件夾的時候,如果在“查看”中選擇的是中等圖標或者大圖標我們就能看到圖片的一個預覽圖。一般都是下面這個樣子的:

C#在Winform中用ListView做簡單的圖片瀏覽器

Win7的資源管理器中顯示圖片

現在我們就用C#在Winform應用程序中模擬一下這個功能,在這裡只是演示一下ListView控件和ImageList的簡單使用,如果在實際開發中的應用那遠遠不是這麼簡單的。

打開Visual Studio新建一個Winform應用程序,在設計器中添加一個ListView控件,選擇ListView控件按下F4設置Dock屬性為DockStyle.Fill

C#在Winform中用ListView做簡單的圖片瀏覽器

設計器中添加ListView

C#在Winform中用ListView做簡單的圖片瀏覽器

設置Dock屬性為Fill

在窗體的Load事件中設置一下ListView控件的View屬性為LargeIcon,並實例化一個ImageList對象

ListView控件的View 5種屬性:LargeIcon SmallIcon Details Tile List

LargeIcon 大圖標顯示,在圖標的下邊有一個標籤顯示文字,平時常用應該就是Details了,效果類似於下圖這樣的:

C#在Winform中用ListView做簡單的圖片瀏覽器

Details

listView1.View = View.LargeIcon;//設置為大圖標顯示

ImageList listImg = new ImageList();//實例化一個ImageList對象

listImg.ImageSize = new System.Drawing.Size(128, 128);//設置image尺寸 最大隻能是256*256

listView1.LargeImageList = listImg;

listImg.ColorDepth = ColorDepth.Depth32Bit;//色深設置為32位,要不然會出現圖片失真

讀取指定的文件夾下的圖片添加到ImageList中

我這是為了簡單演示所以指定了一個固定的路徑,而且圖片類型指定是“JPG”格式。其實可以稍微做一下修改,比如添加一個選擇路徑、獲取多種圖片格式等。

//將指定文件夾下所有JPG格式圖片的路徑獲取到一個string[]中

string[] files = Directory.GetFiles(@"e:\\jpg", "*.jpg");

for (int i = 0; i < files.Length; i++)

{

//按照指定圖片路徑加載圖片到ImageList中

listImg.Images.Add(Image.FromFile(files[i]));

//將圖片名稱設置為ListView控件的items的Name

listView1.Items.Add(Path.GetFileName(files[i]));

//給每個listView的item設置一個對應的imageIndex

listView1.Items[i].ImageIndex = i;

}

最後的顯示效果就是這樣子的:

C#在Winform中用ListView做簡單的圖片瀏覽器

ListView控件中顯示圖片

下面是這個小示例的完整代碼:

C#在Winform中用ListView做簡單的圖片瀏覽器

完整代碼

private void Form1_Load(object sender, EventArgs e)

{

try

{

listView1.View = View.LargeIcon;

ImageList listImg = new ImageList();

listImg.ImageSize = new System.Drawing.Size(128, 128);

listView1.LargeImageList = listImg;

listImg.ColorDepth = ColorDepth.Depth32Bit;

string[] files = Directory.GetFiles(@"e:\\jpg", "*.jpg");

for (int i = 0; i < files.Length; i++)

{

listImg.Images.Add(Image.FromFile(files[i]));

listView1.Items.Add(Path.GetFileName(files[i]));

listView1.Items[i].ImageIndex = i;

}

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

}

喜歡我文章的朋友請關注我,我會定期更新的,如有不足或者錯誤的地方歡迎指正,謝謝!


分享到:


相關文章: