Библиотеки: Easy Canvas - страница 5

 
Nikolai Semko:
версия 1.34 
Исправлены некоторые ошибки

Причины моргания установлены? 

 
Алексей Тарабанов:

Причины моргания установлены? 

какого моргания?

У меня ничего не моргает.

 
Да, никакого. 
 
Nikolai Semko:

какого моргания?

У меня ничего не моргает.

Думаю, речь о 349 строке, пересоздание канваса, которая сейчас закомментирована
 

потестировал библиотеку - удобно и функционально!

два вопроса:

1. есть ли готовая реализация отрезка заканчивающегося стрелкой? (есть примеры под С++ http://www.cyberforum.ru/qt/thread1534114.html  не проблема портировать, но может быть есть готовое, а я не нашел ;) )

2. изменение чарта просто очищает весь канвас? - если да, то это очень не удобно, если нет - не разобрался, нужен пример

 
Oleksii Chepurnyi:
Думаю, речь о 349 строке, пересоздание канваса, которая сейчас закомментирована

я это исправил, когда обнаружил, что происходит подвисание из-за этого. Но моргания не было, а просто iCanvas переставал работать.

 
новая версия 1.35. 
Исправлена маленькая ошибка в версии 1.34, из-за чего пример sine не работал. 
 
Igor Makanu:

потестировал библиотеку - удобно и функционально!

два вопроса:

1. есть ли готовая реализация отрезка заканчивающегося стрелкой? (есть примеры под С++ http://www.cyberforum.ru/qt/thread1534114.html  не проблема портировать, но может быть есть готовое, а я не нашел ;) )

2. изменение чарта просто очищает весь канвас? - если да, то это очень не удобно, если нет - не разобрался, нужен пример

Спасибо, Игорь.

1. Нет, еще не реализовывал. С несглаженными линиями сделать это совсем просто. Много чего не реализовывал, и много чего еще не выкладывал. 

2. Нет, конечно. Зачем это делать. У меня в программах при изменении чарта я принудительно все перерисовываю, когда координаты привязаны ко времени и цене, а не к пикселям экрана. Как же иначе, когда цена-время меняет координаты...

На самом деле - главная прелесть этой библиотеки в скорости. 
Если попробовать все то, что я делаю на iCanvas, сделать на CCanvas, то скорость заметно упадет.
Главная причина, что придется пользоваться ужасно тормознутыми асинхронными функциями, такими, например, как ChartXYToTimePrice(), время которой около 5000 микросекунд. Это невероятно много.

Главная цель iCanvas была как раз уйти от этих очень дорогих функций.

https://www.mql5.com/ru/forum/1111/page2099#comment_6310826

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.01.06
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Обращаю внимание, что штатной функцией Line в CCanvas лучше не пользоваться, когда координаты двух точек формируются не гарантированно в пределах экрана. Там серьезный косяк.

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164

void OnStart() {
   Canvas.Erase();
   ulong t=GetMicrosecondCount();
   Canvas.LineD(-2000000000.0,-2000000000.0,800.0,800.0,0xFF0000FF);
   t=GetMicrosecondCount()-t;
   Print("Время выполнения LineD - " + string(t)+" микросекунд");
   Canvas.Update();

   t=GetMicrosecondCount();
   Canvas.Line(-2000000000,-2000000000,800,800,0xFFFF0000);
   t=GetMicrosecondCount()-t;
   Print("Время выполнения Line - " + string(t)+" микросекунд");
   Canvas.Update();
   Sleep(3000);
}

результат выполнения:

2020.02.07 19:08:28.030 TestLine (EURUSD,M1)    Время выполнения LineD - 4       микросекунд
2020.02.07 19:08:29.381 TestLine (EURUSD,M1)    Время выполнения Line  - 1349411 микросекунд
 
Nikolai Semko:

я это исправил, когда обнаружил, что происходит подвисание из-за этого. Но моргания не было, а просто iCanvas переставал работать.

Может в разных ситуациях по-разному было ) У меня пересоздавался канвас и выглядело это как моргание. я хотел обратить внимание на эту строчку, но не успел )
Причина обращения: