2012-10-02 6 views
1

가변적 인 수의 정적 이미지 리소스가있어 빠르게 보여주고 싶다고 가정 해 보겠습니다. 그래서XAML WinRT 이미지 변경 속도를 향상시키는 방법은 무엇입니까?

나는

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

나는를 변경할 수 있도록

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

와 함께 이미지를 얻을 수

for (blah) 
    bitMaps.Add(new BitmapImage(new Uri(blah + i + ".png"))); 
목록에서

및 속성과에서 INotifyPropertyChanged 클래스가 색인을 변경하여 이미지를 표시합니다.

그런 다음 바운드 이미지 태그 <Image Source="{Binding Image}" Stretch="None" />이 표시됩니다.

처음에는 비트 맵 이미지를로드하는 것처럼 보이지만 인덱스를 변경할 때의 전환이 처음으로 BitmapImage가 느린 로딩이라는 사실을 알려주는 순간 깜박입니다. 이 작업을 수행하는 데 더 나은/효과적인 방법이 있습니까? 또는 이미지를 올바르게 미리로드하려면 어떻게해야합니까?

업데이트 : 난 그냥 이미지의 소스를 수정할 때 당신은 항상 그 깜박임을 얻을 것이다 작성 보이지 않는 모든 이미지 태그와 사용자 컨트롤 ...

답변

1

를 만들어 결국. 이미지를 미리로드하려면 Visual Tree에 이미지를 넣을 수 있습니다. 내 첫 추천이 같은 FlipView을 사용하고 있습니다 : 인덱스를 변경하면 FlipView 이미 사전로드 이전/다음 이미지를 표시합니다

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

.

이미지가 수백 개있는 경우 이미지를 순환하는 사용자 지정 컨트롤을 작성하십시오.

그러나 이미지 원본을 변경하면 이전 비트 맵을 삭제하고 새 비트 맵을 렌더링하는 것과는 간격이 생깁니다.

관련 문제