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

Nikolai Semko
8623
Renat Akhtyamov:

Красиво !!!

Николай, скинь пожалуйста сюда листинг кода формирования радужной палитры цветов

Если будет в виде функции, то будет еще практичнее
сбрасывал много раз. Сейчас не за компом.
Функция называется Grad.
Можно найти хотя бы в послемнем коде 3DSpiral
Алексей Барбашин
306
Nikolai Semko:

3D Moving Avarage
Код завтра закину в КБ


Николай, ты не перестаешь удивлять!

Maxim Romanov
10123
Раньше вращал в голове) теперь можно посмотреть. Интересная мысль, думал я над этим пару часов. Что-бы могло значить поведение по оси z...? Похоже на горы и равнину перед ней. Типа Кавказ в России это цена текущая, а остальное плато - среднее...)
Но если рассматривать в пространстве, то получается, что это расстояние по оси z. Но расстояние в чем? В общем пока никаких анологий не придумал, но интересно, Николай сделал прям то, что я видел в голове☺
Nikolai Semko
8623
Maxim Romanov:
Но если рассматривать в пространстве, то получается, что это расстояние по оси z. Но расстояние в чем? 
Z - это период МА.
В данном случае все три измерения имеют разные величины:
x - время
y - цена
z - период для расчета среднтего арифметического
просто их диапазоны масштабируются под размер экрана.
Nikolai Semko
8623

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Easy Canvas

Nikolai Semko, 2020.02.17 05:15

Хочу прояснить заинтерисованным программистам важным момент работы канваса в режиме тестера. 
Ко мне обратился один известный программист в этом сообществе с таким вопросом:

 - Почему в режиме тестера панель, созданная на объектах перерисовывается на порядок быстрее, чем реализованная на канвасе, тогда как в обычном режиме со скоростью канваса все в порядке?

Разобравшись, понял причину и решение данной проблемы.

Дело в том, что при объектах перерисовка происходит вместе с перерисовкой всего экрана, а экран в тестере перерисовывается не чаще, чем 30 кадров с секунду.

Объекты - это в конечном счете тот же канвас (внутренний), но когда вы изменяете своиства объекта, то канвас объекта не формируется(не пересчитывается), а формируется лишь в момент обновления экрана (ChartRedraw), что происходит в тестере (да и в обычном режиме тоже) не чаще, чем способен различить изменения наш глаз, т.е. не чаще ~ 32 кадров в секунду.

Допустим панель меняется каждый тик. Тогда и в тестере по умолчанию канвас будет пересчитываться каждый тик, но перерисовка в тестере происходит все равно не чаще ~30 милисекунд (~30 кадров в секунду).

Другими словами канвас будет пересчитываться гораздо чаще, чем будет происходить реальный вывод его на экран, поэтому и происходит несоразмерный перерасход ресурсов.

Решением данной проблемы будет контроль пересчета и перерисовывания канваса не чаще, чем раз в 15-30 милисекунд компьютерного времени, тогда и не будет лишних циклов пустых персчетов.

Например так:

void OnTick()
  {
  static uint lastCalc=0;
  uint cur=GetTickCount();
  if (cur-lastCalc>15) {
    ReDrawMyCanvas();
    lastCalc=cur;
   }
  }

Artyom Trishkin
Модератор
82840
Nikolai Semko:

Это нужно в ветку с особенностями запостить - полезно.
Vladimir Pastushak
138356

Всем привет, появилось желание углубить свои знания в Canvas 

но даже не знаю с чего начать. Сейчас представляю что канва это сложные логарифмические формулы и все в этом духе.

Подскажите на примере, как на канве сделать кнопку как ниже. Для понимания нужен код.


Alexandr Andreev
2690
Vladimir Pastushak:

Всем привет, появилось желание углубить свои знания в Canvas 

но даже не знаю с чего начать. Сейчас представляю что канва это сложные логарифмические формулы и все в этом духе.

Подскажите на примере, как на канве сделать кнопку как ниже. Для понимания нужен код.


проще использовать готовый элемент. (как Png картинку)

А так это линия с поворотом еще линия еще поворот и т.д. - потом еще по меньше с заливкой в виде градиента (прям так заливка и назначаеться)

В канвасе в вашем распоряжении только примитивные полоски прямоугольники и кругляшки с возможностью нарисовать контур нашей фигуры или линии, или закрасить её.

Поэтому по умолчанию доступен прямоугольник который сразу закрашивается..... 

Также есть холст с точками чтобы свои примитивы расписать (расширить класс)

На верное много того написал что уже знаете.


Еще есть 3д канва с векторными матрицами