|
Анимация Geometry
|
|||
---|---|---|---|
#18+
Собственно вопрос о том, кто и как анимирует геометрию. Для примера возьмём любую составную геометрию (это те геометрии в которых несколько непрерывных кривых) Если я хочу анимировать не цвет или размер иконки, а её содержимое. То есть поменять в Geometry некоторые её составные части. К примеру, скрыть какую то составную часть a) мы можем с помощью DiscreteObjectKeyFrame изменить геометрию целиком, сохраняя у себя все кадры геометрии. На мой взгляд это самый простой вариант, в котором можно ограничиться чисто XAML ресурсами, без лишнего кода. Простой пример: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
б) класс Geometry является Freezable классом, а значит может быть анимирован непосредственно сам Geometry. Но тут есть некоторые подводные камни. StreamGeometry который получается в результате парсинга PathString'а "по умолчанию" всегда IsFrozen. Код: xml 1.
Чтоб не получать StreamGeometry, просто объявим его как PathGeometry Код: xml 1. 2. 3. 4. 5.
При этом я могу анимировать некоторые свойства, например StartPoint, но анимировать точки сегментов у меня не получается :( работает: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
не работает: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
в) вариант с Shape, можно создать свой Shape объект, развалить геометрию на составные части и управлять ими индивидуально Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
но как не странно, анимировать Segment У меня так и не получилось, вылетает Exception о том, что объект immutable, хотя он не заморожен или что то подобное. у кого какие идеи есть на этот счёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2017, 12:09 |
|
Анимация Geometry
|
|||
---|---|---|---|
#18+
Roman Mejtesно как не странно, анимировать Segment У меня так и не получилось, вылетает Exception о том, что объект immutable, хотя он не заморожен или что то подобное. Полный текст исключения желательно иметь. А так вот https://blogs.msdn.microsoft.com/mikehillberg/2006/09/25/tip-cannot-animate-on-an-immutable-object-instance/ А ещё попробуй анимировать отдельные точки этих сегментов. Причём не PointAnimation, а сами координаты этих точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2017, 19:29 |
|
Анимация Geometry
|
|||
---|---|---|---|
#18+
Если геометрия несложная, состоит из одних прямых, можешь попробовать 3Д сцену заанимировать с 3Д линиями. Все линии в одну плоскость поставь, и камеру поставь перпендикулярно этой плоскости. По крайней мере я источники света "катал" по сцене, просто анимируя их координаты (не помню точно, через таймер в коде, или в разметке задавал параметры анимации). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2017, 19:32 |
|
|
start [/forum/topic.php?fid=21&fpage=9&tid=1440576]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 394ms |
0 / 0 |