在您的应用程序使用 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);
    }          
}