Галерея UI написанных на MQL - страница 52

 
Релиз вечером. 
 

В этом релизе:

1. Избавление от лагов при переключении вкладок и общее увеличение скорости отрисовки заметное невооруженным глазом.

2. Исправление наложения канваса на другое окно со свойством ALWAYS ON TOP.

3. Исправлена проблема адаптации Таскбара изменению размеров графика при закрытии подокон или переносе окна терминала на другой монитор.

4. Проделан большой рефакторинг кода рисования. В корне изменен подход к работе с ресурсами. Теперь ВСЕ изображения рисуются полностью только в первый раз, а потом готовые, без перерисовки ставятся на нужный канвас. Благодаря этому достигнуто значительное повышение скорости реакций элементов и переключения вкладок. На канвасе может быть ЛЮБОЕ количество элементов и при переключении вкладок не будет малейшего лага. Также, теперь "физический" канвас не меняет размеры под изображение и всегда одинаков. Меняет размеры только ресурс хранящий изображение.

Все перечисленное выше потребовало большого труда. Конечно, после такого передела будут мелкие баги, но самое сложное позади.


Разница между прошлым подходом к отрисовке и новым:


//-----------------------------------------------------------------------------------------------------





Публикация вечером.

 
Новая версия улучшила скорость, что очень здорово!
 
Ретер, не могли бы вы рассмотреть возможность изменения каталога на английский язык в будущих релизах? Файлы исходного кода, содержащие имена каталогов, заменяются текстом.
 
hini #:
Ретер, не могли бы вы рассмотреть возможность изменения каталога на английский язык в будущих релизах? Файлы исходного кода, содержащие имена каталогов, заменяются текстом.

Да, конечно. Уже думал над этим. Сделаю специальную релизную версию с именами катологов на английском.

 

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

 
Реter Konow #:

Конечно. Я уже думал об этом. Я сделаю специальный релиз с английским названием каталога.

Я бы предложил не делать специальный релиз с английскими каталогами, а сделать только один такой английский релиз, просто изменив название каталога на английское, и следующим шагом будет изменение имени файла на английское, а исходный код вы все равно будете писать на русском.
По крайней мере, остальным, просматривающим код, достаточно будет взглянуть на имя файла, чтобы понять, что он, вероятно, делает.
 
hini #:
Я бы предложил не делать специальный релиз с английскими каталогами, а сделать только один такой английский релиз, просто изменив название каталога на английское, и следующим шагом будет изменение имени файла на английское, а исходный код вы все равно будете писать на русском.
По крайней мере, остальным, просматривающим код, достаточно будет взглянуть на имя файла, чтобы понять, что он, вероятно, делает.

Согласен. Постепенно перейду на английские названия каталогов. Так будет рациональнее.

 
Samuel Manoel De Souza #:

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

Интересная идея, попробую проверить. Спасибо.

 

И так, обновление...

Это промежуточное обновление. Через несколько дней выпущу следующую версию. Там будет новый функционал для программного взаимодействия с элементами управления.

Должен сказать следующее: я работаю на двух билдах - 2470 и новом. Оснавная часть разработки на старом билде. Там компиляция быстрее - 4 секунды против 26-32 секунд. Новый билд немного иначе работает и это визуально заметно. Иногда он быстрее, иногда медленнее. Может это только кажется. Трудно найти отличие, но по моему оно есть. Интерфейс на старом билде летает. На новом... почти летает. Может мне кажется, потому что привык.

Однако, есть нюансы. Например проблема с переключением графиков, когда возвращаются неверные значения высоты и ширины графика. Это заставляет таскбар прыгать. Я сумел обойти эту проблему, но тогда таскбар не реагирует на другие события изменения размеров графика. В итоге - решил оставить как было. Таскбар будет прыгать на переключении графиков (пока существует проблема возврата неверных значений), но зато будет нормально адаптироваться на других событиях. 

Но и это не все. Оказывается события изменения размеров графика не приходят мгновенно и бывает пауза в пол секунды. На эту задержку накладывается на время перерисовки таскбара и получается приличный лаг. Тут я бессилен.


Скажу так: графику конечно значительно ускорил, но осталось некоторые другие неоптимизированные решения в коде. Усиленно работаю над ними. В основном это касается перехода фокуса окон и очереди перерисовки. Случаются лишние вызовы. Таскбар лагает. Исправил что успел, хоть и не все. Но остальное - дело ближайших дней. В остальном улучшать особо нечего... может только причесать и надушить код, чтобы благоухал)).

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


Берите релиз.

Файлы: