WPF에 대한 질문이 있습니다. XAML없이 코드 (C#)에 모두 씁니다.코드에서 WPF로 애니메이션 또는 캔버스를 업데이트하는 방법은 무엇입니까?
작은 프로그램 설명 : 휴대 전화 센서의 값이됩니다. wpf 프로그램에서이 값을 사용하여 캔버스의 타원에 다른 애니메이션을 만듭니다.
나는 서버 클래스에 http 서버를 가지고 있으며 값을 가져 와서 변수에 씁니다. 내 MainWindow를에서 (나는 그것을 호출), 내 DoubleAnimation 내 시간을 제공 :
public MainWindow()
{
InitializeComponent();
Canvas myPanel = new Canvas();
...
Server server = new Server();
server.GetData();
float xxx ;
xxx = server.duration;
...
있는 GetData() - 서버에 HTTP 요청, 변수 기간에 쓰기 응답을합니다. 내가 server.duration을 통해 얻은 것보다;
완벽하게 작동합니다.
DoubleAnimation anim = new DoubleAnimation();
anim.Duration = new Duration(TimeSpan.FromSeconds(xxx));
anim.From = 10;
anim.To = 0;
anim.AutoReverse = true;
anim.RepeatBehavior = RepeatBehavior.Forever;
MainWindow를() 나는 캔버스에 애니메이션 내 개체를 추가의 끝에 : 여기
내 두 애니메이션입니다myObject.BeginAnimation(Ellipse.OpacityProperty, anim);
myPanel.Children.Add(myObject);
this.Content = myPanel;
그것은 작동하지만 내 시간을 업데이트해야 서버가 새로운 지속 시간 값을 가져올 때
질문 : 새로운 기간 값이되면 DoubleAnimation이 변경되도록하려면 어떻게해야합니까?
다른 단어 질문 : 어떻게 loop 할 수 있습니다 server.GetData(); 기간 값을 업데이트 하시겠습니까?
다른 단어 2의 질문 : 캔버스가 자동으로 업데이트됩니까? 그렇다면 MainWindow()에서 자동 server.GetData()가 호출됩니다.
모든 예와 설명에 대해 매우 감사하게 생각합니다. 감사합니다.
그냥 때마다 서버에서 값을 가져가, 새로운 애니메이션을 만들고 그 적용이 예전보다 우선합니다. 서버로부터 가치를 얻으려면,'DispatcherTimer'의'Tick' 이벤트에서 이것을 수행하십시오. 좋아, 이제 내가 왜 이걸하고 싶어하는지 묻고 싶다. 애니메이션과 같은 로딩을 만들고 싶습니까? – Code0987
Neeraj, 감사합니다. 마을지도에 타원형이있어서 바에서의 활동을 나타냅니다. 사람들이 춤을 추면 타원이 빠르게 깜박입니다. 오키, 나는 디스패처 타이머의 틱 이벤트에서 메인 윈도우()에 내 getdata()를 부탁해야합니까? 내 질문을 부당하게 집어 넣었다면 말해줘! 내 작은 사례를 줄 수 있니? 감사! – user1440275
샘플 코드를 입력했습니다. – Code0987