【发布时间】:2020-11-12 08:08:55
【问题描述】:
我想制作一个图片库,我可以将图片上传到一个文件夹,然后在我的图片库中查看它们。目前我正在使用 switch 语句来更改图像,但我不知道如何将上传的图像添加到图库(在 switch 语句中添加一个新案例,使用我的图像路径)
图像转换器
private void ChangeImage(int num)
{
switch (num)
{
case 1:
Images.Image = Properties.Resources.wp;
imageTxt.Text = "Nice mountain";
break;
case 2:
Images.Image = Properties.Resources.wp1;
imageTxt.Text = "Nice mountain";
break;
case 3:
Images.Image = Properties.Resources.wp2;
imageTxt.Text = "Nice";
break;
case 4:
Images.Image = Properties.Resources.wp3;
imageTxt.Text = "Cool";
break;
case 5:
Images.Image = Properties.Resources.wp4;
imageTxt.Text = "Damn";
break;
case 6:
Images.Image = Properties.Resources.wp5;
imageTxt.Text = "Okay okay";
break;
case 7:
Images.Image = Image.FromFile(@"C:\Users\....\Resources\tree.jpg");
imageTxt.Text = "Okay okay";
break;
}
}
保存 N 上传图片
private void ImageUpload_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.png;)| *.jpg; *.jpeg; *.gif; *.png;";
if (open.ShowDialog() == DialogResult.OK)
{
ImgDirectory.Text = open.FileName;
picPreview.Image = new Bitmap(open.FileName);
}
}
private void Save_Click(object sender, EventArgs e)
{
File.Copy(ImgDirectory.Text, Path.Combine(@"C:\Users\....\Resources\", Path.GetFileName(ImgDirectory.Text)));
Update();
}
【问题讨论】:
-
请注意,
[visual-studio]标记保留用于有关 Visual Studio 的问题。我已经为你删除了。 -
switch/case 不适合这种情况。您可能需要考虑像 Dictionary 甚至 List 之类的东西可能就足够了......
-
您遇到的问题是这种情况是编译时。您需要一个灵活的解决方案,这意味着使用内存结构。如果您只是调用
ChangeImage并增加num的值(即1 2 3 4 5 6 7 等),那么Queue<something>可能是一个很好的解决方案,因为您可以使下一个项目出队,尽管您可能需要创建一个包含图像源位置和要显示的字符串的类型。 -
嘿@John,感谢您的时间和回答,我会看看它!再次感谢。
标签: c# winforms switch-statement