2009-09-02 5 views
1

나는 이것이 쉬운 질문이지만, 알아낼 수 없거나 대답을 찾을 수 없다는 것을 알고 있습니다. 난 그냥 C#을 사용하여 WPF에서 런타임 중에 이미지 소스를 변경하려고합니다. 코드가 실행될 때마다 2.gif를 표시하는 대신 1.gif 만 제거하고 빈 흰색 상자가 나타납니다. 미리 감사드립니다.wpf 변경 이미지 소스

XAML :

<Image x:Name="img" Height="150" Margin="142,20,138,0" VerticalAlignment="Top"> 
     <Image.Source> 
      <BitmapImage UriSource="C:\Users\John\1.gif" /> 
     </Image.Source> 
</Image> 

C 번호 :

string sUri = @"C:\Users\John\2.gif"; 
Uri src = new Uri(sUri, UriKind.RelativeOrAbsolute); 
BitmapImage bmp = new BitmapImage(src); 
img.Source = bmp; 
+0

'높이'가 설정되었지만 '이미지'에 맞게 '너비'늘이기를 할 수 있습니까? – Yogesh

답변

1

BitmapImage를 초기화해야합니다. 당신에게 당신의 이미지를 얻을해야

BitmapImage bmp = new BitmapImage(src); 
bmp.BeginInit(); 
bmp.EndInit(); 

: 올바른 코드는 다음과 같을 것이다.

+0

이 코드는 InvalidOperationException을 생성합니다. "초기화 상태를 두 번 이상 설정할 수 없습니다." 나를 위해. Begin/EndInit은 기본 생성자를 사용하고 나중에 UriSource 속성을 설정하는 경우에만 필요합니까? – simonc

+0

귀하의 의견에 따르면 귀하의 코드가 BeginInit()를 두 번 호출하고 두 번째 호출 할 때 예외가 발생하는 것 같습니다. –

+0

BeginInit()가 두 번 호출된다고 동의합니다. Uri를 사용하는 BitmapImage ctor를 사용할 때 BeginInit() 및 EndInit()에 대한 호출이 불필요한 것처럼 보입니다. – simonc

0

명백한 질문은 첫째 : 당신은 이미지가 실제로 존재 2.gif 것이라고 확신하고 BitmapImage가 null 아님을 설정 한 경우 그것은 img의 출처로?