在您的应用程序使用 C# 时删除或控制图像
Delete or have Control of an Image while your Application is Using it C#
我正在使用 WinForms。在我的表格中,我有一个图片框。在加载表单时,我的程序从我的 C:/image 目录打开一个图像文档到我的图片框中。问题是当我的程序打开该图像时,我无法进入我的 C:/image 目录并删除该图片,因为我的应用程序正在使用它。当我转到 C:/image 目录并尝试删除图片时,出现此错误。
我的目标是控制图像文档,这意味着我能够删除特定文档,即使它正被我的应用程序使用。
测试:我测试了在我的计算机中安装 "Windows Photo Viewer" 的情况下,您是否可以在查看图像的同时删除图像,该应用程序可以让您。 Windows 照片查看器不锁定图像。当您从目录中删除图像时,该图像也会在 windows 照片查看器中消失。我想完成类似的事情。
建议的代码:我尝试执行此操作,但我认为我执行的不正确。
Image img;
using (var bmpTemp = new Bitmap("image_file_path"))
{
img = new Bitmap(bmpTemp);
}
下面我提供了我编写的将图片加载到我的图片框中的代码。
private void Form1_Load(object sender, EventArgs e) //When form load you do this:
{
try // Get the tif file from C:\image\ folder
{
string path = @"C:\image\";
string[] filename = Directory.GetFiles(path, "*.tif"); //gets a specific image doc.
pictureBox1.Load(filename[0]);
lblFile.Text = filename[0];
RefreshImage(); // refreshing and showing the new file
opened = true; // the files was opened.
Image img1 = Image.FromFile(lblFile.Text);
pictureBox1.Image = img1;
pictureBox1.Width = img1.Width;
pictureBox1.Height = img1.Height;
picWidth = pictureBox1.Width;
picHeight = pictureBox1.Height;
getRatio();
}
catch (Exception ex)
{
MessageBox.Show("No files or " + ex.Message);
}
}
在创建图像之前复制图像文件位:
private void Form1_Load(object sender, EventArgs e) //When form load you do this:
{
try // Get the tif file from C:\image\ folder
{
string path = @"C:\image\";
string[] filename = Directory.GetFiles(path, "*.tif"); //gets a specific image doc.
FileInfo fi = new FileInfo(filename[0]);
byte [] buff = new byte[fi.Length];
using ( FileStream fs = File.OpenRead(fileToDisplay) )
{
fs.Read(buff, 0, (int)fi.Length);
}
MemoryStream ms = new MemoryStream(buff);
Bitmap img1 = new Bitmap(ms);
opened = true; // the files was opened.
pictureBox1.Image = img1;
pictureBox1.Width = img1.Width;
pictureBox1.Height = img1.Height;
picWidth = pictureBox1.Width;
picHeight = pictureBox1.Height;
getRatio();
}
catch (Exception ex)
{
MessageBox.Show("No files or " + ex.Message);
}
}
我正在使用 WinForms。在我的表格中,我有一个图片框。在加载表单时,我的程序从我的 C:/image 目录打开一个图像文档到我的图片框中。问题是当我的程序打开该图像时,我无法进入我的 C:/image 目录并删除该图片,因为我的应用程序正在使用它。当我转到 C:/image 目录并尝试删除图片时,出现此错误。
我的目标是控制图像文档,这意味着我能够删除特定文档,即使它正被我的应用程序使用。
测试:我测试了在我的计算机中安装 "Windows Photo Viewer" 的情况下,您是否可以在查看图像的同时删除图像,该应用程序可以让您。 Windows 照片查看器不锁定图像。当您从目录中删除图像时,该图像也会在 windows 照片查看器中消失。我想完成类似的事情。
建议的代码:我尝试执行此操作,但我认为我执行的不正确。
Image img;
using (var bmpTemp = new Bitmap("image_file_path"))
{
img = new Bitmap(bmpTemp);
}
下面我提供了我编写的将图片加载到我的图片框中的代码。
private void Form1_Load(object sender, EventArgs e) //When form load you do this:
{
try // Get the tif file from C:\image\ folder
{
string path = @"C:\image\";
string[] filename = Directory.GetFiles(path, "*.tif"); //gets a specific image doc.
pictureBox1.Load(filename[0]);
lblFile.Text = filename[0];
RefreshImage(); // refreshing and showing the new file
opened = true; // the files was opened.
Image img1 = Image.FromFile(lblFile.Text);
pictureBox1.Image = img1;
pictureBox1.Width = img1.Width;
pictureBox1.Height = img1.Height;
picWidth = pictureBox1.Width;
picHeight = pictureBox1.Height;
getRatio();
}
catch (Exception ex)
{
MessageBox.Show("No files or " + ex.Message);
}
}
在创建图像之前复制图像文件位:
private void Form1_Load(object sender, EventArgs e) //When form load you do this:
{
try // Get the tif file from C:\image\ folder
{
string path = @"C:\image\";
string[] filename = Directory.GetFiles(path, "*.tif"); //gets a specific image doc.
FileInfo fi = new FileInfo(filename[0]);
byte [] buff = new byte[fi.Length];
using ( FileStream fs = File.OpenRead(fileToDisplay) )
{
fs.Read(buff, 0, (int)fi.Length);
}
MemoryStream ms = new MemoryStream(buff);
Bitmap img1 = new Bitmap(ms);
opened = true; // the files was opened.
pictureBox1.Image = img1;
pictureBox1.Width = img1.Width;
pictureBox1.Height = img1.Height;
picWidth = pictureBox1.Width;
picHeight = pictureBox1.Height;
getRatio();
}
catch (Exception ex)
{
MessageBox.Show("No files or " + ex.Message);
}
}