Как добавить EasingFunction в приложение UWP по коду - PullRequest
1 голос
/ 04 июня 2019

Решение, данное мне по другому вопросу, заключалось в написании и добавлении пользовательской функции замедления в мой код UWP.В качестве примера был приведен фрагмент кода:

public class StepEasingFunction : EasingFunctionBase
{
    public double NormalizedStep { get; set; }

    protected override Freezable CreateInstanceCore()
    {
        return new StepEasingFunction {NormalizedStep = NormalizedStep};
    }

    protected override double EaseInCore(double normalizedTime)
    {
        var stepIndex = Math.Round(normalizedTime / NormalizedStep);
        return NormalizedStep * stepIndex;
    }
}

Я искал в Интернете и пробовал разные способы реализовать этот код в своем приложении, но не смог.Я не знаю, входит ли этот код в мое пространство имен или мне нужно создать внешний класс.

Если я помещаю код в свое пространство имен, я получаю ошибки EaseInCore и CreateInstanceCore:

no suitable method found to override 

и в Freezable:

Freezable does not exist in the namesape

Я прочитал Microsoft ина других сайтах информация о функциях замедления, но ни на одном из них не приведен полный пример того, как реализовать это в коде UWP C #.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 04 июня 2019

EasingFunctionBase, который вы опубликовали, является классом WPF (System.Windows).К сожалению, этот класс не расширяемый в UWP (см. Этот пост на форуме: https://social.msdn.microsoft.com/Forums/en-US/81e9d88b-70c7-4ba2-92bf-7c3890b91f81/uwpeasingfunctionbase-uwp-how-to).

В вашем случае вам, вероятно, потребуется использовать пользовательскую анимацию в коде или использовать ключевые кадры для имитации другой кривой. Вы также можетепосмотрите на Visual Layer API , который позволяет создавать собственные функции замедления.

...