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 есть глюк в событийной модели, приводящий к лагам.
Вообще, было бы не плохо, свои вопросы о проблемах сопровождать минимальным кодом, воспроизводящим эти проблемы. Не нужно было бы строить догадки и предположения. 

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

Спасибо!

 

Можно ли как-то использовать CCanvas и OBJ_BUTTON вместе?

Я создал CCanvas, ширина и высота которого равны ширине и высоте всего экрана. Я установил фон false для холста (для этого я добавил функцию в Canvas.mqh).

У меня есть другой индикатор, который загружается на график и имеет кнопки для смены символов. Но нажатия на кнопки не обрабатываются. Должен ли я убедиться, что расположение холста не мешает расположению кнопок?

Спасибо,

Эллиот

 
E Kwestel #:

Но нажатия на кнопки не обрабатываются. Должен ли я убедиться, что расположение холста не мешает расположению кнопок?

OBJPROP_ZORDER

Приоритет графического объекта на получение события нажатия мышки на графике (CHARTEVENT_CLICK).
По умолчанию при создании значение выставляется равным нулю, но при необходимости можно повысить приоритет.
При наложении объектов друг на друга событие CHARTEVENT_CLICK получит только один объект, чей приоритет выше остальных.
 
trader6_1 #:
Спасибо!
 
@Nikolai Semko, Николай, вопрос к Вам как спецу. Мне нужно из всех цветов RGB выбрать к примеру все с красным оттенком. Проще говоря, все цвета, которые имеют отношение к красному. Знаю, что там 16,7 млн. цветов. Есть какой-то несложный подход лоя такой задачи? Спасибо.
Nikolai Semko - BeeXXI Corporation
Nikolai Semko - BeeXXI Corporation
  • 2024.10.23
  • www.mql5.com
Профиль трейдера
 
Denis Kirichenko #:
@Nikolai Semko, Николай, вопрос к Вам как спецу. Мне нужно из всех цветов RGB выбрать к примеру все с красным оттенком. Проще говоря, все цвета, которые имеют отношение к красному. Знаю, что там 16,7 млн. цветов. Есть какой-то несложный подход лоя такой задачи? Спасибо.
Наверное,  если R>G && R>B, то это уже красный оттенок