从文件夹加载未定义的图像
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\"
不正确,因为它不能以 \
结尾。
它应该以 Snapshot2
或 Snapshot2.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);
}
我看到了很多类似的帖子,但没有一个可以帮助我解决问题。我是 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\"
不正确,因为它不能以 \
结尾。
它应该以 Snapshot2
或 Snapshot2.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);
}