私はこのフォーラムにまったく慣れていませんが、まだ WPF の初心者です。
インクキャンバスのストロークをアニメーション化する必要があるプロジェクトに取り組んでいます。必要なアニメーションの 1 つに「消える」があります。ボタンをクリックすると、選択したストロークが徐々に消えていきますが、アニメーションの最後に表示されます。
ストロークの不透明度プロパティがないので、ストーリーボードと一緒に ColorAnimation クラスを使用してみました。ストロークを自分自身または名前を使用してターゲットにできないため、このコードを機能させることができませんでした。
現在、ストロークの色を背景の色に徐々に変更し、最後に初期値にリセットすることで、このシステムを実装することを考えています。これはコストのかかるループですが、他にアイデアはありません。
他に解決策があれば教えていただけると幸いです。
前もって感謝します。
編集:同じプロジェクトの他の部分を扱っていたため、コメントには答えていません。
DrawingAttributes に格納されているアルファ値を使用しようとしましたが、変数ではないため値を変更できません。同じことが RGB 値にも当てはまります。ストロークをループで消す方法がわかりません。私はすでにプロジェクトのほとんどを実装しているので、ゆっくりとそれらを消すために何かが必要です. 以下に、ストローク自体を変更してアニメーション化する例を示します。
private int dropOffset = 1;
private void DropAnimation()
{
m = new Matrix();
m.Translate(0, dropOffset);
animStrokes.Transform(m, false);
YChange += dropOffset;
dropOffset += 2;
}
そして別のクラスでは、
public void AnimateStrokes(Dispatcher canvasDispatch)
{
Stopwatch initial = Stopwatch.StartNew();
while (initial.ElapsedMilliseconds < 2000)
{
foreach (Animation ai in AnimationList)
{
ai.animateSelected();
}
canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render);
Thread.Sleep(50);
}
foreach (Animation a in AnimationList)
{
a.undoAnimation();
}
canvasDispatch.Invoke(new Action(() => { }), DispatcherPriority.Render);
}
このようにディスパッチャーを渡すのは健康的ではないことはわかっていますが、今はそれで十分です。
よろしくお願いします。