C# 读取图片文件夹后把图片直接显示到下拉框中
时间: 2023-10-07 08:07:03 浏览: 184
可以通过以下步骤来实现:
1. 读取图片文件夹中的所有图片文件,可以使用 `Directory.GetFiles` 方法,将文件路径存储到一个字符串数组中。
2. 创建一个 `ImageList` 控件,将读取到的每个图片文件加载到 `ImageList` 中,可以使用 `Image.FromFile` 方法。
3. 创建一个 `ComboBox` 控件,将 `ImageList` 中的图片绑定到 `ComboBox` 的 `DropDownList` 属性上,可以使用 `ComboBox.DrawMode` 属性设置为 `DrawMode.OwnerDrawFixed`,然后在 `ComboBox.DrawItem` 事件中绘制每个图片项。
以下是示例代码:
```csharp
private void Form1_Load(object sender, EventArgs e)
{
string[] imageFiles = Directory.GetFiles(@"C:\Images");
ImageList imageList = new ImageList();
foreach (string file in imageFiles)
{
imageList.Images.Add(Image.FromFile(file));
}
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.DataSource = imageFiles;
comboBox1.ItemHeight = imageList.ImageSize.Height + 2;
comboBox1.DropDownWidth = imageList.ImageSize.Width + SystemInformation.VerticalScrollBarWidth;
comboBox1.DrawItem += ComboBox1_DrawItem;
}
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
}
ComboBox comboBox = (ComboBox)sender;
string file = (string)comboBox.Items[e.Index];
ImageList imageList = comboBox.DataSource as ImageList;
if (imageList != null)
{
Image image = imageList.Images[e.Index];
e.Graphics.DrawImage(image, e.Bounds.Left + 1, e.Bounds.Top + 1, imageList.ImageSize.Width, imageList.ImageSize.Height);
}
else
{
e.Graphics.DrawString(file, comboBox.Font, Brushes.Black, e.Bounds.Left + 1, e.Bounds.Top + 1);
}
}
```
阅读全文