/// <summary> /// アニメーション内のループ毎の最後の処理 /// </summary> /// <param name="slide">スライドが続くか</param> /// <param name="fade">フェードが続くか</param> private void AnimationFinal(bool slide, bool fade) { GHManager.Launcher.BringToFront(); // 終了していない場合、続ける if (slide || fade) { AnimationStopwatch.Restart(); } }
/// <summary> /// アニメーションを開始する /// </summary> /// <param name="visible">ウィンドウの表示・非表示</param> private bool StartAnimation(bool visible) { if (TokenSource != null) { if (IsAnimation) { TokenSource.Cancel(); } TokenSource.Dispose(); TokenSource = null; } TokenSource = new CancellationTokenSource(); CancelToken = TokenSource.Token; if ((!visible && FormVisible) || (visible && !FormVisible)) { GHFormDraw(); FormVisible = visible; // 非表示遅延時間の更新 HideTimer.Interval = animateInfo._DelayTime; IsAnimation = true; StopwatchTotal = 0; // スライドアニメーション if (animateInfo._Slide) { RemainingDistanceOfSlide = 0; if (GHManager.IsVertical) { Left = !visible ? GHFormShowPosition : GHFormHidePosition; } else { Top = !visible ? GHFormShowPosition : GHFormHidePosition; } } else { // スライドなしフェード if (GHManager.IsVertical) { Left = GHFormHidePosition = GHFormShowPosition; } else { Top = GHFormHidePosition = GHFormShowPosition; } } // フェードアニメーション if (animateInfo._Fade) { animateInfo._Alpha = (byte)(!visible ? 255 : 0); } else { // フェードなしスライド if (animateInfo._Slide) { animateInfo._Alpha = 255; } else { animateInfo._Alpha = (byte)(!visible ? 0 : 255); } } // アニメーション開始 AnimationStopwatch.Restart(); GHFormAnimation(CancelToken); // ランチャーを最前面 GHManager.ItemList.BringToFront(); GHManager.MysetList.BringToFront(); GHManager.Launcher.BringToFront(); return(true); } return(false); }