我的项目中有一张图像存储在Resources/myimage.jpg中。我如何动态加载这张图像到位图对象?


当前回答

或者你可以在处理WPF或Silverlight时使用这一行,特别是当你已经在XAML标记中有源字符串时:

(ImageSource)new ImageSourceConverter().ConvertFromString(ImagePath);

ImagePath是这样的:

string ImagePath  = "/ProjectName;component/Resource/ImageName.png";

其他回答

你使用的是Windows窗体吗?如果你已经使用属性/资源UI添加了图像,你可以从生成的代码中访问图像,所以你可以简单地这样做:

var bmp = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

我建议:

System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = 
    thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
Image yourImage = Image.FromStream(file);

从msdn: http://msdn.microsoft.com/en-us/library/aa287676 (v = vs.71) . aspx

使用图像。FromStream更好,因为你不需要知道图像的格式(bmp, png,…)

奇怪的是,通过对设计师的调查,我发现了一个更简单的方法:

该映像似乎可以从. properties . resources中获得。

我只是使用一个图像,因为我感兴趣的是将它粘贴到一个带有图像的控件中。

(Net 4.0, VS2010.)

或者你可以在处理WPF或Silverlight时使用这一行,特别是当你已经在XAML标记中有源字符串时:

(ImageSource)new ImageSourceConverter().ConvertFromString(ImagePath);

ImagePath是这样的:

string ImagePath  = "/ProjectName;component/Resource/ImageName.png";

这是我如何从一个windows窗体应用程序的资源(.rc)文件创建一个ImageList:

ImageList imgList = new ImageList();

        var resourceSet = DataBaseIcons.ResourceManager.GetResourceSet(CultureInfo.CreateSpecificCulture("en-EN"), true, true);

        foreach (var r in resourceSet)
        {
            Logger.LogDebug($"Resource Type {((DictionaryEntry)r).Key.ToString()} is of {((DictionaryEntry)r).Value.GetType()}");
            
            if (((DictionaryEntry)r).Value is Bitmap)
            {
                imgList.Images.Add(((Bitmap)(((DictionaryEntry)r).Value)));
            }
            else
            {
                Logger.LogWarning($"Resource Type {((DictionaryEntry)r).Key.ToString()} is of type {((DictionaryEntry)r).Value.GetType()}");
            }
        }