0

我多次尝试从本机资源加载位图,但我失败了很多次。

我尝试加载的图像在本机资源中是这样的:

http://i.stack.imgur.com/x7Jr8.jpg

我写图像的代码是这样的:

    [DllImport("kernel32.dll")]
public static extern int UpdateResource(uint hUpdate, SqlDbType lpStructure, uint lpName, ushort wLanguage, int lpData, UIntPtr cbData);
[DllImport("kernel32.dll")]
public static extern UIntPtr BeginUpdateResource(string pFileName, bool bDeleteExistingResources);
[DllImport("kernel32.dll")]
public static extern bool EndUpdateResource(UIntPtr hUpdate, bool fDiscard);
public static bool WriteResource(string FileName, byte[] data, uint Name)
{
    UIntPtr ptr = BeginUpdateResource(FileName, false);
    GCHandle Handle = GCHandle.Alloc(data, GCHandleType.Pinned);
    uint size = Convert.ToUInt32(Convert.ToUInt64(data.Length));
    UIntPtr pt = new UIntPtr(size);
    UpdateResource(ptr.ToUInt32(), SqlDbType.Bit, Name, 0, Handle.AddrOfPinnedObject().ToInt32(), (UIntPtr)Convert.ToUInt64(data.Length));
    EndUpdateResource(ptr, false);
    return true;
}

我尝试使用 LoadImage 和 LoadBitmap API 调用,但失败了很多次。

你能给我提供一个关于如何进行这种转换的片段吗?我想从本机资源中获取它并将其存储到 Bitmap 类(.NET 框架的常见 System.Drawing.Bitmap 类)中。我会很感激任何帮助。

4

1 回答 1

0

我不确定我是否正确理解了你。但我可以想象你正在寻找这样的东西:

System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = 
thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
this.pictureBox1.Image = Image.FromStream(file);
于 2013-06-23T10:59:10.553 回答