2017-11-06 9 views
0

私はUWPアプリケーションを開発しています。私のページの1つは実際にユーザーが写真を撮るためのものです。このページには、ユーザーが写真を撮る前に選択するタイマーがあります。UWPのカメラタイマーアニメーション

しかし、私はカメラの画面でカウントダウンして、写真を撮る前に準備する時間があることをユーザーに知らせるようにしたいと思っています。

どうすればいいですか?ありがとうございました!

ただ、それが必要とされる場合には、ここでタイマーとテイクピクチャーボタンの私のコードです:

private async void PhotoButton_Click(object sender, RoutedEventArgs e) 
    { 
     //If preview is not running, no preview frames can be acquired 
     if (!_isPreviewing) return; 

     await Task.Delay(TimeSpan.FromSeconds(_seconds)); 
     await TakePhotoAsync(); 
     await GetPreviewFrameAsSoftwareBitmapAsync(); 

     PreviewFrameBackground.Visibility = Visibility.Visible; 

    } 

private void Timer_3sec_Click(object sender, RoutedEventArgs e) 
    { 
     Timer_5sec.Opacity = 0.2; 
     Timer_7sec.Opacity = 0.2; 
     Timer_3sec.Opacity = 1.0; 
     _seconds = 3; 


    } 
    private void Timer_5sec_Click(object sender, RoutedEventArgs e) 
    { 
     Timer_3sec.Opacity = 0.2; 
     Timer_7sec.Opacity = 0.2; 
     Timer_5sec.Opacity = 1.0; 
     _seconds = 5; 

    } 

    private void Timer_7sec_Click(object sender, RoutedEventArgs e) 
    { 
     Timer_3sec.Opacity = 0.2; 
     Timer_5sec.Opacity = 0.2; 
     Timer_7sec.Opacity = 1.0; 
     _seconds = 7; 

    } 
+0

[DispatcherTimer](https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer(v = vs.110).aspx)はどうですか? – TheTanic

+0

以前はDispatcherTimerを使ったことがありません...シンプルなデモを見ると可能でしょうか?私は本当に感謝します。ありがとうございました! – thalassophile

+0

私の答えを確認してください – TheTanic

答えて

1

あなたはあなたの問題を解決するためにDispatcherTimerを使用することができます。
ここでは、(サンプルは、キャプチャを取るか、残りの秒を表示するには、ちょうどそれらを計算する方法を示してはいけない!)

クラスパラメータのことを行うことができますどのように少しのコードサンプル:

private int _startTime; 
private DispatcherTimer _timer = new DispatcherTimer(); 

方法:

private void StartTimer() 
     { 
      _timer.Interval = TimeSpan.FromMilliseconds(500); 
      _timer.Tick += Timer_Tick; 
      _startTime = Environment.TickCount; 
      _timer.Start(); 
     } 

private void Timer_Tick(object sender, object e) 
     { 
      var remainingSeconds = _seconds - TimeSpan.FromMilliseconds(Environment.TickCount - _startTime).Seconds; 

      if(remainingSeconds <= 0) 
      { 
       _timer.Stop(); 
       _timer.Tick -= Timer_Tick; 
       timerText.Text = "0 Seconds"; 
       //Capture Image 
      } else 
      { 
       timerText.Text = "" + remainingSeconds + " Seconds"; 
      } 

     } 

あなたは_secondsを設定した後、-メソッドをクリックしてあなたの中にStartTimer方法 - を呼び出す必要があります。

+0

ありがとうございました!しかし、どのように残りの秒を表示するのですか?これが私がこの質問を投稿した主な理由です... – thalassophile

+0

残りの秒でピクチャを作成し、oyurプレビューエリアにロードするか、テキストボックスを表示します。 – TheTanic

+0

このようにテキストブロック用に記述しますか? timer.Text = remainingSeconds.ToString(); – thalassophile