У меня есть библиотека элементов управления, в которую я добавил файл .resx (ImageResources.resx). Он содержит два изображения .png, которые я впоследствии добавил.
В той же самой библиотеке у меня есть элемент управления, который загружает пару изображений, чтобы сделать какой-то собственный рисунок, но, похоже, я не могу загрузить ресурсы:
void GTableLayoutPanel::SetBorderImagesFromManifest(String^ topLeftCornerImageName, String^ topImageName)
{
// Grab the assembly this is being called from
Assembly^ assembly = Assembly::GetExecutingAssembly();
// Grab the images from the assembly
Stream^ stream = assembly->GetManifestResourceStream(topLeftCornerImageName);
Image^ topLeftImage = System::Drawing::Image::FromStream(stream);
stream = assembly->GetManifestResourceStream(topImageName);
Image^ topImage = System::Drawing::Image::FromStream(stream);
// Update the internal store from the supplied images
SetBorderImages(topLeftImage, topImage);
}
... дает мне ошибки, жалуясь, что stream
имеет значение null, что говорит о том, что мой вызов GetManifestResourceStream
не работает.
Изображения называются group_box_top.png
и group_box_top_left.png
, и я вызываю загрузчик изображений следующим образом:
SetBorderImagesFromManifest("group_box_top_left.png", "group_box_top.png");
Я также пробовал:
SetBorderImagesFromManifest("group_box_top_left", "group_box_top");
... потому что файлы появляются в файле .resx без расширений .png, но это дает ту же ошибку.
Я что-то здесь пропустил?
[Edit] Я попробовал предложение из последней ссылки и получил:
MyControlsLib.ImageResources.resources
Итак, теперь я попытался сослаться на:
Stream^ strm1 = assembly->GetManifestResourceStream("MyControlsLib.ImageResources.resources.group_box_top_left");
Stream^ strm2 = assembly->GetManifestResourceStream("MyControlsLib.ImageResources.resources.group_box_top_left.png");
Stream^ strm3 = assembly->GetManifestResourceStream("MyControlsLib.ImageResources.group_box_top_left");
Stream^ strm4 = assembly->GetManifestResourceStream("MyControlsLib.ImageResources.group_box_top_left.png");
... все они возвращают nullptr: - /