0

私はこのフォーラムにまったく慣れていませんが、まだ 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);
    }

このようにディスパッチャーを渡すのは健康的ではないことはわかっていますが、今はそれで十分です。

よろしくお願いします。

4

1 に答える 1

0
InkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(100, 0, 255, 255);

少し遅れるかもしれませんが、それでも他の人を助けてください! 100 は、基本的に不透明度のように機能するアルファ値です!! それをいじると、ストロークの透明度を変更できるようになります:)

于 2013-04-15T15:21:40.457 に答える