我将c ++代码中的图像切换为“XAML for Windows Embedded(Compact 2013)”项目(也称为“Silverlight for Windows Embedded”)的一部分,如described in this answer.
我使用数字作为生成的文件PROJECTNAMEGenerated.rc2
中列出的URI。它看起来像这样:
IDR_PROJ_APP SLWE_XAML DISCARDABLE "XamlPack\\App.Compressed"
IDR_PROJ_DISCLAIMERPAGE SLWE_XAML DISCARDABLE "XamlPack\\DisclaimerPage.Compressed"
IDR_PROJ_EASTEREGGPAGE SLWE_XAML DISCARDABLE "XamlPack\\EasterEggPage.Compressed"
IDR_PROJ_MAINPAGE SLWE_XAML DISCARDABLE "XamlPack\\MainPage.Compressed"
IDR_PROJ_MEASUREMENTPAGE SLWE_XAML DISCARDABLE "XamlPack\\MeasurementPage.Compressed"
105 XAML_RESOURCE DISCARDABLE "..\\Xaml\\Ressources\\BatteryChargerError.png"
106 XAML_RESOURCE DISCARDABLE "..\\Xaml\\Ressources\\BatteryHigh.png"
107 XAML_RESOURCE DISCARDABLE "..\\Xaml\\Ressources\\BatteryLow.png"
108 XAML_RESOURCE DISCARDABLE "..\\Xaml\\Ressources\\disclaimer.png"
109 XAML_RESOURCE DISCARDABLE "..\\Xaml\\Ressources\\easter.jpg"
如果我添加页面或其他图像,看起来数字会发生变化。
知道我如何获得可用于IXRBitmapImagePtr->SetUriSource(src);
(或IXRBitmapImage.SetUriSource(src);
)的健壮URI吗?
我还尝试将图像作为资源添加到应用程序中并加载它们:
BSTR src = TEXT("#IDB_BATTERY_HIGH_CHARGING");
IXRApplicationPtr app;
GetXRApplicationInstance(&app);
HINSTANCE instance = App::GetHInstance();
IWICBitmap* img = 0;
HRESULT res = app->LoadImageFromResource(instance,src, L"PNG", &img);
IXRBitmapImagePtr bitmapImage;
app->CreateObject(IID_IXRBitmapImage, &bitmapImage);
res = bitmapImage->SetSource(img);
m_pBatteryStateImage->SetSource(bitmapImage);
这会设置一个不同的图像 - 但是错误的图像(并且总是相同的错误图像,无论我定义哪个src
)。
答案 0 :(得分:0)
我找到了解决方案。
再次将资源添加到"标准"资源文件( AppName.rc )并给他们一个id(你不必复制文件,你可以使用原始路径)。
e.g:
IDB_ERROR PNG "..\\Xaml\\Ressources\\Error.png"
然后你可以使用这个id:
int src = IDB_ERROR;
IXRApplicationPtr app;
GetXRApplicationInstance(&app);
HINSTANCE instance = App::GetHInstance();
IWICBitmap* img = 0;
HRESULT res = app->LoadImageFromResource(instance, MAKEINTRESOURCE(src), L"PNG", &img);
IXRBitmapImagePtr bitmapImage;
app->CreateObject(IID_IXRBitmapImage, &bitmapImage);
res = bitmapImage->SetSource(img);
m_pBatteryStateImage->SetSource(bitmapImage);
"Silverlight for Windows Embedded Developer's Guide"说可以这样做(但我没有尝试过):
bitmapImage->SetUriSource(L"Assets/ninthAve.png");
mybe你必须添加一个"#":
bitmapImage->SetUriSource(L"#Assets/ninthAve.png");