Canvas - это круто! - страница 95

 
Petr Zharuk #:

Отрисова в onTimer() находится? Если да, то какой Event в миллисекундах установлен?

У меня там мульти-таймерная система:

Но, как правило, 30 миллисекунд для отрисовки анимации.

В данном примере всего 6 объектов Canvas. 4 объекта для меню и два на чарты
В основном вывод графики осуществляется без таймера, но в некоторых моментах он включается.
Multi Timer
Multi Timer
  • www.mql5.com
Простой класс, который пригодится, когда Вам необходимы несколько таймеров с независимой обработкой и неконфликтующие между собой.
 
Nikolai Semko #:
Просто демонстрация возможностей Canvas.
Видео не ускорено, все работает без лагов.
OpenCL и DirectX не использовались.
Если использовать  OpenCL, то процессор не вообще не будет нагружаться.
Но даже с использованием простого процессора время формирования одного кадра в среднем 5 -15 миллисекунд. 


Очень красиво
 
Nikolai Semko #:
У меня там мульти-таймерная система:

Но, как правило, 30 миллисекунд для отрисовки анимации.

В данном примере всего 6 объектов Canvas. 4 объекта для меню и два на чарты
В основном вывод графики осуществляется без таймера, но в некоторых моментах он включается.

Как побороть замерзание рендера Canvas при перемотке графика методом зажатия мыши? У меня не рендерится пока не отпущу мышь.

 
Petr Zharuk #:

Как побороть замерзание рендера Canvas при перемотке графика методом зажатия мыши? У меня не рендерится пока не отпущу мышь.

Это проблемы с выбором события для перерисовки Canvas. 
При скролинге основного чарта можно использовать два события  CHARTEVENT_CHART_CHANGE или  CHARTEVENT_MOUSE_MOVE (если нажата кнопка мыши).
Например, посмотрите этот пример.
Если речь о MT4, то, возможно потребуется использовать таймер для перерисовки, а в  OnChartEvent() устанавливать только разрешающие bool метки. Т.к. в МТ4 есть глюк в событийной модели, приводящий к лагам.
Вообще, было бы не плохо, свои вопросы о проблемах сопровождать минимальным кодом, воспроизводящим эти проблемы. Не нужно было бы строить догадки и предположения. 

 
Nikolai Semko #:

Это проблемы с выбором события для перерисовки Canvas. 
При скролинге основного чарта можно использовать два события  CHARTEVENT_CHART_CHANGE или  CHARTEVENT_MOUSE_MOVE (если нажата кнопка мыши).
Например, посмотрите этот пример.
Если речь о MT4, то, возможно потребуется использовать таймер для перерисовки, а в  OnChartEvent() устанавливать только разрешающие bool метки. Т.к. в МТ4 есть глюк в событийной модели, приводящий к лагам.
Вообще, было бы не плохо, свои вопросы о проблемах сопровождать минимальным кодом, воспроизводящим эти проблемы. Не нужно было бы строить догадки и предположения. 

Работа с событиями помогла решить мою проблему.

Спасибо!

Причина обращения: