簡體   English   中英

在“適用於Windows Embedded的XAML(Compact 2013)”項目中獲取圖像的可靠源URI。

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

此答案中所述,我在c ++代碼中的“ Windows Embedded的XAML(Compact 2013)”項目(也稱為“ Windows Embedded的Silverlight”)的后面切換圖像

我將數字用作生成的文件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);的健壯URI IXRBitmapImagePtr->SetUriSource(src); (或IXRBitmapImage.SetUriSource(src); )?

我還嘗試將圖像作為資源添加到應用程序,並像這樣加載它們:

    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 ,總是錯誤的圖像)。

我找到了解決方案。

再次將資源添加到“標准”資源文件( AppName.rc )中,並為其指定一個ID(不必復制文件,可以使用原始路徑)。

例如:

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

“用於Windows Embedded開發人員指南的Silverlight”說可以這樣做(但我沒有嘗試過):

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

而且,我必須添加“#”:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM