如何使用另一个表单上的打开文件对话框更改表单的背景图像

Posted

技术标签:

【中文标题】如何使用另一个表单上的打开文件对话框更改表单的背景图像【英文标题】:how to change the background image of a form using open file dialog on another form 【发布时间】:2013-01-23 07:31:58 【问题描述】:

我有一个疑问。我有一个启动表单,这是我项目的第一个表单,我想在关闭后更改该表单的背景图像。例如,我的软件启动并在启动表单之后和设置中我具有更改启动表单的背景图像的功能。表单关闭时可以更改背景图片吗? (当用户进入设置表单时,我的启动表单已关闭)。

我已经编写了这个代码表单来更改背景图像,但我不知道如何在启动表单打开时更改表单图像,它应该打开从打开文件对话框更改图像。

我的代码是:

var FD = new System.Windows.Forms.OpenFileDialog();
            FD.Filter = "jpeg files|*.jpg";
            if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            
                string fileToOpen = FD.FileName;

                System.IO.FileInfo File = new System.IO.FileInfo(FD.FileName);
                BackgroundImage = Image.FromFile(FD.FileName); 
            

【问题讨论】:

【参考方案1】:

好的,试试下面的

您已经为启动画面设置了背景图片

eg : it location was  c:\sam.jpeg

现在在表单关闭事件中尝试以下代码

System.IO.File.Delete(@"C:\Sam.jpeg");
Image.FromFile(FD.FileName).Save(@"C:\Sam.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);

现在它会删除旧文件并将新图像设置为旧名称...

在重新加载时它会显示新的背景图片...

【讨论】:

先生,您没有得到我的问题。正确阅读。我说,如何更改从具有显示对话框选项的表单关闭的一个表单的图像 先生,我不知道如何从指定位置设置背景图像。如何从文件夹“resoucses”中设置背景图像,因为我在资源文件夹中拥有所有图像?请帮助我 先生,错误来了,这条路径不是合法的形式,我在结束事件 Image.FromFile(FD.FileName).Save(@"global::WindowsFormsApplication1.Properties. Resources.aquib1", System.Drawing.Imaging.ImageFormat.Jpeg); 您可以从资源文件夹中获取图像文件,如下所示字符串 relative = @"Resource\Sam.jpeg"; System.IO.FileInfo fi = new System.IO.FileInfo(Application.ExecutablePath); string absolute = System.IO.Path.Combine(fi.Directory.FullName, relative); absolute - 有完整路径名 先生,我已经写了这个 Image.FromFile(FD.FileName).Save("Resources.aquib1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);但它不起作用。没有错误,但资源中的图像没有替换为我通过打开的显示对话框选择的文件【参考方案2】:

您从某处加载初始图像,然后只需将该图像替换为用户使用 OpenFileDialog 选择的图像,然后在下次显示初始图像时加载新图像。


编辑:进一步解释

解决方案示例。将图像存储在与应用程序相同的文件夹中(例如:“splash.png”),然后您可以在 Splash Form Load 事件中加载它。现在,当用户想用打开的文件对话框替换设置中的图像时,您只需将选择的文件复制到应用程序的文件夹(Application.StartupPath 应该为您提供应用程序文件夹的路径)并覆盖旧的启动画面。 png (也许你可以在覆盖之前重命名旧的)然后下次加载应用程序时,这就是 Splash 表单将加载的图像。

这是一个可以改进的简单解决方案,但作为第一次尝试,它应该会产生您想要的结果。

【讨论】:

先生,我的问题是我没有从某个地方加载启动表单图像,我使用了背景图像选项来设置图像。那怎么办? 要获得这种动态行为,您必须更改该实现,以便可以从外部源更改它。如果它是静态指定的,您将无法持久更改它。 (我的意思是,要进行更改,以便用户下次启动启动表单时会显示新图像) @shariq_khan 我希望我理解你的意思,你有一个启动表单,它只在应用程序开始时显示,然后关闭,你可以从应用程序设置中更改启动表单中显示的图像,所以下次应用程序启动时,它将显示另一个图像。如果这是正确的,那么您需要更改启动表单检索其用于背景的图像的方式。例如,来自应用程序所在文件夹中的文件,因此通过替换您将显示另一个图像. 是的先生,您理解正确,但是我该如何替换图像?我在哪里可以存储图像以便可以替换它?您能否更深入地解释答案,因为我是一名学生,您可以通过我是 c# 的新手的问题本身来获得它。如果可以的话,你能帮帮我吗 @shariq_khan 我在回答中更详细地描述了解决方案

以上是关于如何使用另一个表单上的打开文件对话框更改表单的背景图像的主要内容,如果未能解决你的问题,请参考以下文章

在 mfc 中打开另一个表单

单击另一个表单上的保存按钮后如何刷新以前的表单

关闭一个对话框并打开另一个

使用另一个窗体应用程序更改 Windows 窗体的背景颜色

表单之间的交互——如何将一个表单的控件从另一个表单更改?

html 更改任何表单域上的背景透明度