Комментарии 23
Насколько такая анимация эффективнее вращения всей картинки целиком?
А по поводу второго вопроса
почему контрол создаётся в одном месте, а стиль для него регистрируется в другом
Возможно я действительно не раскрыл тему. Такой подход является более гибким. xaml файл проще к редактированию, легче группировать визуализацию из xaml файлов, чем хардкодить все в реальном классе контрола. Да и к тому же, задать в xaml анимацию куда проще, чем ее прописывать в C# коде.
Но конечно сложные конролы требуют комбинации из xaml и c#
к примеру
А не слишком ли громоздкий велосипед? Не проще обычную анимированную гифку показывать без подключения кучи библиотек и возможностей? Не забивание ли это гвоздей микроскопом?
Да можно вращать картинку, да можно добавить гиф анимацию
Но такой конечный подход делает контрол куда более гибким.
Т.е. вы можете написать контрол и использовать его во всех своих проектах, лишь добавляя сверху в стили окна нужный цвет или градиент. Добавить к этой анимации еще какую-то, а гиф и картинку каждый раз придется переделывать с 0.
Вы на полном серьезе предлагаете делать прелоадер, захардкодив 8 элементов и 64 кейфрейма для них? Это же автоматизируется в 10 строчек кода...
И нет, не захардкодив, благодаря стилизации авалонии их можно легко поменять
Я честно не знаю каким образом сделать это лучше
В качестве основы для своей версии я брал различные вариации прелоадеров на css/js
Это хардкод, потому что элементов четко восемь, а у каждого по четко восемь ключевых кадров. Как вы определили, что у Cue="0%"
должно быть значение 0.17
, у Cue="14%"
— 0.34
, и так далее? Как вычислили положение каждой точки на Canvas? Неужели вручную на бумажке? Если я захочу поменять скорость анимации, или начальное положение, или сделать больше\меньше точек — мне придется снова пересчитать руками все коэффициенты?
Напрашивается мысль, что все это можно было бы не описывать декларативно в виде XML, а сгенерировать программно в цикле, основываясь на трех переменных — числе точек, скорости анимации (количестве "поворотов" в секунду") и изначальном положении.
что навешать дополнительные анимации вне контрола будет невозможно
Или крайне затруднительно
Так что на мой взгляд это 2 равноценных стула, которые оставят полностью свободу выбора для пользователя
Что за дополнительные анимации, которые нужно навешивать вне контрола, и зачем это делать?
и предоставлять юзерам, в вашем раскладе юзеру будет не очень удобно (насколько я понимаю практически невозможно) что то поменять в системе анимаций цветов форм и размеров
Либо же я не понимаю ваше решение
Все настраиваемые переменные, а также ControlTemplate
для "кружка" можно выставить из компонента в виде AvaloniaProperty
. Для пользователя это будет и проще, и удобнее, чем полностью переопределять ControlTemplate
.
как мне кажется кейс при котором я захочу перекрасить каждый кружок отдельно достаточно популярен
codepen.io/sashatran/pen/vRrxXw
но быть может вы и правы
я подумаю об этом, попробовав реализовать альтернативную версию
если у вас есть заготовка на гите — можете поделиться — мне будет приятно и интересно
спасибо
Давайте исходить из реальных задач, вряд ли я захочу менять скорость или начальное положение круглиха в этом контроле.
и возможно каждого в отдельности
в решении impwx я пока не представляю как это сделать
но мб я плохо представляю его решение
Цвет целиком меняется стилем, а если у вас такой странный брендбук, что надо сделать 8 разноцветных круглишков прозрачного цвета, то не очень мне это кажется реальной ситуацией, тогда уж придется делать свой контрол
Можно сделать метод создания кругляшка виртуальным и позволить переопределить его при наследовании. Тогда можно будет сделать и разноцветные кружки, и линию вместо круга, и вообще что угодно.
Задача вполне реальная: дизайнер нарисовал, нужно сверстать пиксель-в-пиксель.
Мы уходим не туда, но дизайнер не последнее слово. Если его предложение стоит стопяцот часов, очень быстро появится другой макет.
Здесь есь же речь идёт о среднестатистическом готовом решении и демонстрации возможностей платформы.
И при этом перенос анимации в универсальный код с тремя переменными все эти вопросы все так же не решает
Задумчивая Авалония