【发布时间】:2011-12-29 14:30:47
【问题描述】:
我对这个论坛完全陌生,而且还是 WPF 的初学者。
我正在开展一个项目,该项目需要对 inkcanvas 上的笔划进行动画处理。所需的动画之一是“消失”。我想让选中的笔画随着点击按钮逐渐消失,但出现在动画结束时。
由于笔画没有 opacity 属性,我尝试将 ColorAnimation 类与情节提要一起使用。我无法使这段代码正常工作,因为我无法使用它们自己或使用它们的名称来定位笔画,因为它们没有任何内容。
现在我正在考虑通过逐渐将笔划的颜色更改为背景的颜色,最后将其重置为初始值来实现这个系统。这是一个代价高昂的循环,但我没有其他想法。
如果您有任何其他解决方案可以与我分享,我将不胜感激。
提前致谢。
编辑:我没有回答 cmets,因为我正在处理同一项目的其他部分。
我尝试使用存储在 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);
}
我知道这样通过调度员是不健康的,但现在就足够了。
再次提前致谢。
【问题讨论】:
-
您可以编辑描边颜色的 alpha 值,但您仍然需要遍历它们。您说这是一个代价高昂的循环,但您是否对其进行了基准测试,或者您认为它太慢了?
标签: wpf animation inkcanvas coloranimation