2012-11-27 4 views
0

다른 애니메이션과 함께 타이머를 실행하는 애니메이션이 있습니다. 이벤트가 트리거되었을 때 이미지 소스 파일을 변경할 수 있지만 현재 element.Source (요소는 이미지 인 현재 캔버스 객체와 동일)에 액세스 할 수 없습니다.캔버스 객체의 이미지 소스를 동적으로 변경

public static void Clouds(Canvas canvas, int boundry) 
{ 
    var random = new Random(); 
    foreach (FrameworkElement element in canvas.Children) 
    { 
     var elementName = Regex.Split(element.Name, "_"); 
     if (elementName[0] == "cloud") 
     { 
      if (Canvas.GetLeft(element) < canvas.ActualWidth + element.Width) 
      { 
       Canvas.SetLeft(element, Canvas.GetLeft(element) + 1); 
      } else 
      { 
       // Change image source file here. 
       Canvas.SetTop(element, random.Next(0 - ((int)element.Height/2), Core.GetPercentage((int)canvas.ActualHeight, boundry))); 
       Canvas.SetLeft(element, 0 - element.Width); 
      } 
     } 
    } 
} 

어떤 도움을 주셔서 감사합니다.

+0

입니다 ? –

+0

모든 아이들은 이미지이므로 그냥 이미지 –

답변

0

FrameworkElement에는 Source라는 속성이 없으므로 원하는 이미지 요소를 캐스팅하거나 선택해야합니다. 이 같은 뭔가를해야만이 작동

지금
 public static void Clouds(Canvas canvas, int boundry) 
     { 
      var random = new Random(); 
      foreach (var image in canvas.Children.OfType<Image>()) 
      { 
       if (image.Name.Contains("cloud_")) 
       { 
        if (Canvas.GetLeft(image) < canvas.ActualWidth + image.Width) 
        { 
         Canvas.SetLeft(image, Canvas.GetLeft(image) + 1); 
        } 
        else 
        { 
         Canvas.SetTop(image, random.Next(0 - ((int)image.Height/2), Core.GetPercentage((int)canvas.ActualHeight, boundry))); 
         Canvas.SetLeft(image, 0 - image.Width); 
        } 
       } 
      } 
     } 

당신이 VAR "이미지"로 소스 속성에 액세스 할 수 있습니다 당신이 Canvas.Children에서 찾고있는 요소의 어떤 종류의 이미지

+0

고마워요. 이걸보고 다시 HQ –

+0

으로 돌아갑니다. 꿈 같은 작품, 다시 한번 감사드립니다! –

관련 문제