Donc, j'essaie de charger une ressource image à partir d'un fichier dll. Pour ce faire j'ai créé la méthodeErreur GDI + lors de l'appel de Image.FromHBitmap sur le handle renvoyé par LoadImage
static Bitmap GetImageResource(IntPtr handle, string resourceId)
{
IntPtr img_ptr = NativeMethods.LoadImage(handle, "#" + resourceId, IMAGE_ICON, 16, 16, 0);
if (img_ptr == IntPtr.Zero)
throw new System.ComponentModel.Win32Exception((int)NativeMethods.GetLastError());
return Image.FromHbitmap(img_ptr);
}
Qui charge la ressource d'image à partir de la DLL, étant donné un handle et l'ID de ressource. Selon this question I asked yesterday je dois préfixer un # à l'id, ce que j'ai fait. Maintenant, la poignée retournée par LoadImage est zéro plus, mais lorsque je tente de créer une image bitmap de cette poignée à l'aide Image.FromHbitmap
je reçois un System.Runtime.InteropServices.ExternalException
dire
Une erreur générique est produite dans GDI +
(ou quelque chose de similaire, je ne reçois pas le message en anglais, donc je l'ai traduit à peu près)
J'ai déjà lu this et this question mais ils ne m'a pas aidé.
Pourquoi est-ce? Merci à l'avance
C'est tout à fait normal, vous chargez une icône, pas une image. Utilisez Icon.FromHandle() à la place. Vous devrez détruire l'icône à nouveau avec DestroyIcon, plus tard, après vous être assuré que l'objet Icon ne peut plus être utilisé. –