【问题标题】:Set BackgroundImage from string that reads contents of .txt file从读取 .txt 文件内容的字符串中设置 BackgroundImage
【发布时间】:2016-01-01 22:10:29
【问题描述】:

我正在尝试设置我的表单以从 .txt 文件中列出的路径加载其 BackgroundImage

文本文件的内容如下所示:

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background.png")

当表单加载时,我运行以下代码:

//LOAD FORM

     string BackgroundSkinsPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
     this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

用户可以通过单击与不同背景图像相关的按钮来更改该文本文件的内容:

//CHANGE BG IMAGE

    private void ChangeBGButton_Click(object sender, EventArgs e)
    {  
     string BackgroundSkinsPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
     System.IO.File.WriteAllText(BackgroundSkinsPath, "System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background2.png")");
     this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
    }

我想将背景图像位置写入文件的原因是,下次用户加载应用程序时,它将具有他们选择的背景图像,这是我能想到的唯一方法这样做。

问题是,我写的代码不起作用,我不知道如何修复它。

我希望用户能够从“我的文档”文件夹中的文件夹中为应用程序选择背景图像(通过按钮或类似方式),并让应用程序记住他们下次启动时选择的图像应用程序。

【问题讨论】:

    标签: c# string image file background


    【解决方案1】:

    您正在 cfg 文件中编写 C# 表达式,而不是带有背景图像有效路径的文字字符串。

    using System.IO;
    
    private void ChangeBGButton_Click(object sender, EventArgs e)
    {  
        string BackgroundSkinsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
        string currentBackgroundImage = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background2.png");
        File.WriteAllText(BackgroundSkinsPath, currentBackgroundImage );
        this.BackgroundImage = Image.FromFile(File.ReadAllText(currentBackgroundImage));
    }
    

    现在您可以在 LOAD 方法中使用

    string BackgroundSkinsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
    this.BackgroundImage = Image.FromFile(File.ReadAllText(BackgroundSkinsPath));
    

    【讨论】:

    • 效果很好,谢谢!我知道这是我会在那里丢失的小东西哈哈
    • @Patrick 我建议发布一个新问题,而不是用第二个问题更新这个问题。您将有更多人关注您的新问题
    • 有什么方法可以对我的项目资源中的背景图像使用相同的方法吗?我问的原因是因为我想从资源加载“库存”皮肤,从我的文档加载“自定义”皮肤。如果您认为将其作为一个单独的问题会更好,我会的。
    • 如果您能够详细说明您的问题,我总是建议您发布一个新问题。相反,在已经回答的问题上发布额外的“问题”是Chamaleon Questions 的基础,它通常没有什么帮助,因为没有人会被告知您的新“问题”。但是,我这样说并不是为了放弃您的要求,而是真的因为这是最好的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多