0

我对这个论坛完全陌生,仍然是 WPF 的初学者。

我正在做一个项目,该项目需要对 inkcanvas 上的笔划进行动画处理。所需的动画之一是“消失”。我想通过单击按钮使选定的笔画逐渐消失,但出现在动画结束时。

由于笔画没有不透明度属性,我尝试使用 ColorAnimation 类和情节提要。我未能使此代码正常工作,因为我无法使用它们自己或使用它们的名称来定位笔画,因为它们没有任何内容。

现在我正在考虑通过逐渐将笔划的颜色更改为背景的颜色来实现这个系统,最后将其重置为初始值。这是一个代价高昂的循环,但我没有其他想法。

如果您可以与我分享任何其他解决方案,我将不胜感激。

提前致谢。

编辑:我没有回答评论,因为我正在处理同一项目的其他部分。

我尝试使用存储在 DrawingAttributes 中的 Alpha 值,但我无法更改该值,因为它不是变量。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 是 alpha 值,它基本上就像一个不透明度值!!搞砸了,你将能够改变你的笔画的透明度:)

于 2013-04-15T15:21:40.457 回答