简体   繁体   English

在“适用于Windows Embedded的XAML(Compact 2013)”项目中获取图像的可靠源URI。

[英]Get robust source URIs for Images in “XAML for Windows Embedded (Compact 2013)” projects

I switch images in the c++ code behind part of a “XAML for Windows Embedded (Compact 2013)” project (also known as "Silverlight for Windows Embedded") like described in this answer. 此答案中所述,我在c ++代码中的“ Windows Embedded的XAML(Compact 2013)”项目(也称为“ Windows Embedded的Silverlight”)的后面切换图像

I use the numbers as URIs that are listed in the generated file PROJECTNAMEGenerated.rc2 . 我将数字用作生成的文件PROJECTNAMEGenerated.rc2中列出的URI。 It looks like this: 看起来像这样:

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"

And it looks like the numbers will change if I add a page or another image. 而且,如果我添加页面或其他图像,数字似乎会改变。

Any idea how I get a robust URI that I can use for IXRBitmapImagePtr->SetUriSource(src); 任何想法,如何获得可用于IXRBitmapImagePtr->SetUriSource(src);的健壮URI IXRBitmapImagePtr->SetUriSource(src); (or IXRBitmapImage.SetUriSource(src); )? (或IXRBitmapImage.SetUriSource(src); )?

I also tried to add the images as resources to the application and load them like this: 我还尝试将图像作为资源添加到应用程序,并像这样加载它们:

    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);

This sets a different image - but the wrong one (and always the same wrong one, no matter which src I define). 这设置了不同的图像-但是错误的图像(无论我定义的是哪个src ,总是错误的图像)。

I found a solution. 我找到了解决方案。

Add your resources again to the "standard" resource file ( AppName.rc ) and give them an id (you don't have to copy the file, you can use the original path). 再次将资源添加到“标准”资源文件( AppName.rc )中,并为其指定一个ID(不必复制文件,可以使用原始路径)。

eg: 例如:

 IDB_ERROR  PNG                     "..\\Xaml\\Ressources\\Error.png"

Then you can use this id: 然后,您可以使用以下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);

The "Silverlight for Windows Embedded Developer's Guide" says it can be done like that (but I didn't try it): “用于Windows Embedded开发人员指南的Silverlight”说可以这样做(但我没有尝试过):

bitmapImage->SetUriSource(L"Assets/ninthAve.png");

And mybe you have to add a "#": 而且,我必须添加“#”:

bitmapImage->SetUriSource(L"#Assets/ninthAve.png");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在“ Windows Embedded的XAML(Compact 2013)”中切换图像 - How do I switch an image in “XAML for Windows Embedded (Compact 2013)” Windows Embedded Compact 2013-初始应用重点 - Windows Embedded Compact 2013 - Initial Application Focus QueryPerformanceCounter()测试Windows Embedded Compact 7 - QueryPerformanceCounter() Test for Windows Embedded Compact 7 意外的 IConnectionPointImpl::Unadvise 调用 Windows Embedded Compact 7 - Unexpected IConnectionPointImpl::Unadvise call on Windows Embedded Compact 7 如何将Windows Embedded Compact 7 DLL移植到Windows CE 5.0 / 6.0? - How to Port Windows Embedded Compact 7 DLL to Windows CE 5.0 / 6.0? 哪个文件配置Windows Embedded Compact 7.0上的缓存? - Which file configures caching on Windows Embedded Compact 7.0? Windows消息有多强大? - How robust are windows messages? CryptUnProtectData() 在 Windows 7 嵌入式 COMPACT 上返回 ERROR_INSUFFICIENT_BUFFER(122) 错误 - CryptUnProtectData() returns ERROR_INSUFFICIENT_BUFFER(122) error on Windows 7 EMBEDDED COMPACT 嵌入式项目的资源 - resources for embedded projects Windows Embedded的Silverlight:如何在xaml和后台代码之间传递imagesource依赖项属性 - Silverlight for Windows Embedded: how to communicate imagesource Dependency Property between xaml and code-behind
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM