Страницы

Поиск по вопросам

понедельник, 2 марта 2020 г.

Как лучше реализовать масштабирование свеч на графике

#c_sharp #wpf #график #wpf_canvas


Нарисовал свой график на панели Canvas.
Как его рисовал я - Есть массив всех свеч, и я вывожу на панель лишь видимый диапазон
свеч, т.е. если сдвинуть график в сторону, я с каждой новой свечой рассчитаю новый
диапазон видимых свеч, очищаю Canvas.Children и данный список выведу на график, добавив
в Canvas.Children. При таком варианте я могу спокойно настраивать масштаб, при новом
расчете я нахожу максимум и минимум свеч и заношу рассчитываю высоту относительно этого.
Но данный способ слишком долгий для расчетов. И в итоге логичнее уже на графике хранить
сразу все свечи. Но вот проблема заключается тогда в видимом диапазоне. Т.е. надо в
массиве Canvas.Childern найти нужные свечи и поменять их значения Y и X, значения длины
прямоугольников и линий, которые идут вверх и вниз от них. Но будет ли это лаконичным?
На сайтах это всё происходит мгновенно, как ни крути. Может кто подсказать пожалуйста,
как лучше реализовать это? 2 картинки, с любого сайта и моей программы.


    


Ответы

Ответ 1



Смотрите, как можно сделать это с помощью трансформаций. Я буду выводить коллекцию прямоугольников, для вывода буду использовать ItemsControl, у которого в качестве ItemsPanel будет установлен Canvas. ItemsControl я оберну в Border, чтобы просто обозначить границы графика, ну и потом он еще сыграет свою небольшую роль. Также я размещу 2 кнопки для сдвига "окна" просмотра графика:

Комментариев нет:

Отправить комментарий