WPF. Класс шаблонной анимации - PullRequest
0 голосов

[Я создал класс анимации DrawingLine для рисования узоров.

Конструктор запускает процесс создания и анимации линий:

internal DrawingLine(double x, double y, int _thickness, Brush _brush, Canvas _canvas)

В конце анимации это метод генерирует новую строку:

void CreateNewLine(object sender, EventArgs e)
        {
            Line newLine = new Line();

            switch (lines.Count % 2 == 0)
            {
                case true:
                    {
                        if (lines.Count < 18)
                        {
                                    newLine.X1 = 0;
                                    newLine.Y1 = 180 - offset;
                                    newLine.X2 = 0;
                                    newLine.Y2 = 180 - offset;
                        }

                        //   ...   <-- Here is the math determines the positions of the points of the line

        }

Метод производит анимацию:

void AnimateXY()
        {
            DoubleAnimation lineXAnimation = new DoubleAnimation();
            lineXAnimation.From = CurrentLine.X1;
            lineXAnimation.To = to_X;
            lineXAnimation.Duration = TimeSpan.FromSeconds(duration);

            DoubleAnimation lineYAnimation = new DoubleAnimation();
            lineYAnimation.From = CurrentLine.Y1;
            lineYAnimation.To = to_Y;
            lineYAnimation.Duration = TimeSpan.FromSeconds(duration);
            lineYAnimation.Completed += CreateNewLine;

            CurrentLine.BeginAnimation(Line.X2Property, lineXAnimation);
            CurrentLine.BeginAnimation(Line.Y2Property, lineYAnimation);
        }

Вопрос: Как лучше всего l oop эту анимацию, чтобы не было памяти утечки? Также хотелось бы услышать общие рекомендации по улучшению структуры таких занятий. Изображение выкройки прилагается.] 1

1 Ответ

0 голосов

Я нашел ответ на свой вопрос. Если в классе полно анимации, значит, он поддерживает рекурсивный вызов (рекурсивное создание). Рекурсивный вызов делает анимацию бесконечной.

...