我是这个论坛的新手,还是WPF的初学者。
我正在开发一个项目,该项目需要对墨迹上的笔划进行动画处理。其中一个动画是“消失”。我想通过单击按钮使选定的笔划逐渐消失,但显示在动画的末尾。
由于笔划没有不透明度属性,我尝试使用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);
}
我知道通过这样的调度员是不健康的,但现在就足够了。
提前再次感谢。
答案 0 :(得分:0)
InkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(100, 0, 255, 255);
可能会有点晚,但对其他人的帮助一点也不少! 100是alpha值,基本上就像不透明度值!与之相关,您将能够改变笔画的透明程度:)