从文件夹加载未定义的图像

Load undefined images from folders

我看到了很多类似的帖子,但没有一个可以帮助我解决问题。我是 c# 的新手,我想从表单上的 3 个不同文件夹将 3 张图像加载到 3 个图片框中,稍后打印。图像由第三方应用程序通过屏幕截图创建并保存在这些文件夹中。 不过我无法定义他们的名字,这会导致文件路径出现问题,我认为...... 我没有创建 SystemWatchFolder,而是看到有人使用: open.Filter = "Image Files (*.png)|*.png" 这是一般的工作还是我需要一个监视文件夹?

我试图合并来自类似项目的代码,最后得到了下面的代码(顺便说一句,很抱歉发布了整个代码)。 我还尝试将路径更改为: (@"C:....) 同样的错误信息。

我真的需要并感谢你的帮助、评论、想法等

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2\");
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "Image Files (*.png)|*.png";

    pictureBox1.Image = bmp;

}
private void PictureBox1_Click(object sender, EventArgs e)
{

    Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2\");
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "Image Files (*.png)|*.png";

    pictureBox2.Image = bmp;

}

private void PictureBox2_Click(object sender, EventArgs e)
{
    Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot3\");
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "Image Files (*.png)|*.png";

    pictureBox3.Image = bmp;

}
private void PictureBox3_Click(object sender, EventArgs e)

框中的图像未显示,我收到此错误:

System.ArgumentException: 'Parameter is not valid.'

对于这一行: Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot1\");

你做错了什么

首先你的 Bitmap 应该选择你的图片路径。所以它必须在用户选择OpenFileDialog中的图片后最后初始化。此外,您从未打开过 OpenFileDialog.

所以你所有的方法应该看起来像这样:

private void PictureBox1_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "Image Files (*.png)|*.png|All files (*.*)|*.*";
    if (open.ShowDialog() == DialogResult.OK)
    {
        Bitmap bmp = new Bitmap(open.FileName);
        pictureBox1.Image = bmp;
    }
}

更好的方法

你真的不需要创建三个类似的方法来做同样的事情。 您可以只创建一个并在所有图片框中使用它:

private void PictureBox_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    open.Filter = "Image Files (*.png)|*.png|All files (*.*)|*.*";
    if (open.ShowDialog() == DialogResult.OK)
    {
        Bitmap bmp = new Bitmap(open.FileName);
        PictureBox targetPictureBox = e.Source as PictureBox;
        targetPictureBox.Image = bmp;
    }
}

在下面的代码中:

Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2\");
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files (*.png)|*.png";

pictureBox2.Image = bmp;

有两个问题:

问题 1

行中:

Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2\");

您正在从文件加载 Bitmap 图像。路径:

"C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2\"

不正确,因为它不能以 \ 结尾。 它应该以 Snapshot2Snapshot2.png 结尾,具体取决于文件名。

问题 2

行中:

OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files (*.png)|*.png";

您正在初始化 OpenFileDialog 但未使用它。您可以使用文件对话框获取文件名,也可以像在第一行中那样对文件名进行硬编码,但您混淆了主题。

选项 1:硬编码文件名

假设文件名为 Snapshot2.png:

,这应该可以工作
Bitmap bmp = new Bitmap("C:\Users\Public\1-2d27a482-b755\Files\Snapshots\Snapshot2.png");
pictureBox2.Image = bmp;

选项 2:使用文件对话

OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files (*.png)|*.png";
if (open.ShowDialog() == DialogResult.OK)
{
    pictureBox2.Image = new Bitmap(open.FileName);
}