2017-08-25 10 views
0

「XAML for Windows Embedded(Compact 2013)」プロジェクトの一部の背後にある画像を切り替える(「Silverlight for Windows Embedded ")like described in this answer.「XAML for Windows Embedded(Compact 2013)」プロジェクトの画像の堅牢なソースURIを取得

数字は、生成されたファイル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

解決策が見つかりました。

"標準"リソースファイル(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); 

"Silverlight for Windows Embedded Developer's Guide"が、それはそのように行うことができます(私はそれを試していない)と言う:

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

「#」を追加する必要があります。

bitmapImage->SetUriSource(L"#Assets/ninthAve.png"); 
関連する問題