2012-10-02 24 views
1

假設我有一個可變數量的靜態圖像資源,我想快速顯示。如何提高XAML WinRT圖片更改速度?

所以我有

for (blah) 
    bitMaps.Add(new BitmapImage(new Uri(blah + i + ".png"))); 
在列表

和屬性的INotifyPropertyChanged的類來獲取圖像

public ImageSource Image 
{ 
    get 
    { 
     return bitMaps[Index]; 
    } 
} 

隨着

public int Index 
{ 
    set 
    { 
     _Index = value; 
     OnPropertyChanged("Image"); 
    } 
} 

,這樣我可以改變通過改變索引來顯示圖像。

然後我有一個綁定的圖片標籤<Image Source="{Binding Image}" Stretch="None" />來顯示它。

儘管看起來最初加載位圖圖像時,改變索引時的轉換仍然第一次閃爍,導致我的BitmapImage延遲加載。有沒有更好的/更高效的方式來做到這一點?或者我如何正確地預加載圖像?

更新:我結束了剛剛創建與創建和無形的所有圖像標記用戶控件...

回答

1

修改圖像的源時,你總是會得到的閃爍。如果您想要預先加載圖像,則可以將它們放入可視化樹中。我的第一個建議是使用FlipView這樣的:

<FlipView ItemSource="{Binding Bitmaps}" SelectedIndex="{Binding Index}"> 
    <FlipView.ItemTemplate> 
     <DataTemplate> 
      <Image Source="{Binding}" /> 
     </DataTemplate> 
    </FlipView.ItemTemplate> 
</FlipView> 

當您更改索引,FlipView會顯示下一個/上一個影像,這是已經預裝。

如果您有數百張圖片,請編寫自己的自定義控件,以便在圖片中循環。

但無論哪種方式,如果您更改圖像的來源,丟棄舊位圖和渲染新位圖之間會有差距。