Я совершенно новичок на этом форуме и все еще новичок в WPF.
Я работаю над проектом, который требует анимации штрихов на чернильном холсте. Одна из требуемых анимаций — «исчезновение». Я хочу, чтобы выделенные штрихи постепенно исчезали по нажатию кнопки, но появлялись в конце анимации.
Поскольку для обводки нет свойства непрозрачности, я попытался использовать класс 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);
}
Я знаю, что так проходить мимо диспетчера вредно, но пока достаточно.
Еще раз спасибо заранее.