[英]Get robust source URIs for Images in “XAML for Windows Embedded (Compact 2013)” projects
[英]How do I switch an image in “XAML for Windows Embedded (Compact 2013)”
我有一個Windows CE項目,該項目將XAML用於Windows Embedded(緊湊版2013) (也稱為“用於Windows Embedded的Silverlight”)用於GUI。
我在xaml中定義了一個圖像,現在我想在部分后面的c ++代碼中切換此圖像。
我該怎么做呢?
我找到了這個解決方案:
m_pBatteryStateImage
是在Xaml中定義的圖像。
可以在自動生成的文件PROJECTNAMEGenerated.rc2
找到圖像的URI。
void MainPage::SetBatteryState(BatteryStateFlags batteryState)
{
BSTR src = GetImageSourceUri(batteryState);
SetImage(src);
}
void MainPage::SetImage(BSTR src)
{
IXRApplication* application;
App::GetApplication(&application);
//Check which uri is currently used:
BSTR originalSrc;
IXRImageSource* iSource;
m_pBatteryStateImage->GetSource(&iSource);
IXRBitmapImagePtr bmpSrc = (IXRBitmapImagePtr)iSource;
bmpSrc->GetUriSource(&originalSrc);
//Set new image if source uri is different
if (wcscmp(originalSrc,src)!=0)
{
IXRBitmapImagePtr bitmapImage;
application->CreateObject(IID_IXRBitmapImage, &bitmapImage);
bitmapImage->SetUriSource(src);
m_pBatteryStateImage->SetSource(bitmapImage);
}
}
BSTR MainPage::GetImageSourceUri(BatteryStateFlags batteryState)
{
BSTR src;
//see PROJECTNAMEGenerated.rc2 - the numbers will change if images are added (they are alphabetically sorted).
//TODO make it robust against changes
if(batteryState & BatteryChargerError)
src = TEXT("#105");
else if(batteryState & BatteryHigh)
src = TEXT("#106");
else if(batteryState & BatteryLow)
src = TEXT("#109");
else
//Show error if nothing else matches (Should not happen)
src = TEXT("#105");
return src;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.