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



我看到了许多类似的线程,但是没有什么可以帮助我解决问题的。我是C#的新手,我想从一个表格上的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:"参数无效。">

对于此行: 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);
}

最新更新