将图像添加到项目资源文件夹运行时

时间:2016-10-26 20:16:00

标签: c# wpf

我创建了一种将上传的图像保存到项目资源文件夹的方法。图像已正确添加到我的资源文件夹,但我无法使用该图像,因为我无法设置构建操作。我在哪里可以存储上传的图片,哪个文件夹?我读到了bin目录,但这是一个好习惯吗?

资源是我项目下的一个文件夹。正如您在下面的屏幕截图中看到的,我无法设置上传图像的构建操作(beats_1.jpg)。

enter image description here

保存图像的代码

var path = string.Format(@"{0}\Resources\Images\{1}", Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, GiftImageFileName);
var resizedImage = GiftImage.CreateResizedImage(100, 100, 0);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(resizedImage));
using (FileStream stream = new FileStream(path, FileMode.Create))
{
    encoder.Save(stream);
}

1 个答案:

答案 0 :(得分:0)

好的,所以我猜你要在构建之前执行这个过程,因此你的文件作为资源包含在编译输出中,你可以在编译后的可执行文件中引用它。

这有两种方法,一种是快速而肮脏,一种是更复杂和正确。

快速和脏:(这应该在未加载Visual Studio解决方案时执行)

  • 通过C#代码中的XML修改库打开Project CSPROJ文件(例如,使用XDoc)。

  • 以编程方式在<Project>部分

    下添加以下内容
     <ItemGroup>
        <Resource Include="Resources\Images\beats_1.png" />
        <Resource Include="Resources\Images\beats_2.png" />
        <Resource Include="Resources\Images\beats_n.png" />
      </ItemGroup>
    
    • 保存CSPROJ文件
    • 编译项​​目

更复杂和正确:   - 使用VSPackage visual studio插件修改当前加载的项目并添加新资源项。   - 见这里:How do I programmatically add a file to a Solution?