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

 
hini #:
Ветви шаблонанаписаны в коде KIB, который
Не должны смешиваться с кодом сборщика. Он должен быть выпущен как отдельный проект.

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

 
Реter Konow #:

Работа с одним большим канвасом имеет массу ограничений. Я уже думал над таким вариантом и даже обсуждал с Николаем.

Поясню: Вы это делаете потому что используете штатный класс Ccanvas. Там готовые решения в рамках которых Вы работаете. Но я не использую класс Ccanvas. Все коды отрисовки написаны личная разработка. Поэтому я не придерживаюсь концепции - один канвас для ВСЕГО. На мой взгляд, это технически неудобное и малоэффективное решение в условиях графика. Проще использовать наборы объектов битмап и к ним цеплять готовые ресурсы, чем иметь один битмап и программно выстраивать взаимодействие изображений на нем. Даже представить сложно. Но это не главное.

Представьте насколько труднее реализовать концепцию многооконного графического интерфейса, если у Вас только ОДИН канвас. Я бы за такое не взялся. 

Но даже это не является решающим. Главная причина отказа от идеи одного канваса для всех изображений: когда есть только один канвас, перемещение окон интерфейса требует перерисовки внутри среды MQL. В противовес этому, если каждое окно занимает свой объект битмап и двигается ObjectSetInteger(), - перерисовка при перемещении ложится на штатные функции которые работают вне среды MQL. Поэтому это намного быстрее. 

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


За наводку на  TextOut большое спасибо. Исследую этот момент.

Я как раз НЕ использую штатный канвас :).

И мне как раз оказалось проще реализовать многооконный интерфейс на одном битмапе. Но каждому свое! 


И на практике видимо быстрее перерисовать целый канвас чем использовать ObjectSetInteger и т.д...

 
Andrey Barinov #:

Я как раз НЕ использую штатный канвас :).

И мне как раз оказалось проще реализовать многооконный интерфейс на одном битмапе. Но каждому свое! 

Увы, не во всех случаях. Для моих задач технически проще работать с ограниченным набором битмапов. И 100% быстрее. Намного быстрее.

Но, для других разработок лучше работают другие решения, и поэтому да - каждому свое. :)

 
Nikolai Semko #:
Нет Перт, все равно too much. На твой интерфейс со всем текстом, тенями и т.д. максимум 50 мс на слабеньком процессоре. 
Ищи косяк.
Запусти профилирование. Посмотри какие функции отжирают 95% времени.
Может быть используешь ChartGet или XY функции(хотя у тебя же нет привязки к графику)
Короче запускай профилирование. Делов то на 40 секунд.

Да, все проверю еще раз. Но тут дело в другом. Блок рисования ведь не только рисует. Внутри него логические лабиринты обрабатывающие приходящие события. Они нужны чтобы определять что нужно рисовать, что нет. Выбирать откуда брать изображения, куда и как их накладывать. Если бы это была простая функция отрисовки в 100 строк, то и говорить нечего. Но это массивный механизм для обеспечения рисования ВСЕГО.

Это стоит принимать во внимание.))

 
Andrey Barinov #:

Я как раз НЕ использую штатный канвас :).

...

А это, приятный сюрприз. :) Самостоятельная разработка это всегда круто. Даже если она несовершенна. 

Я не против класса Ccanvas (даже включил его функционал в файлы конструктора), но не пользуюсь пока. Ключевое слово "пока". Есть у меня на него большие планы. В дальнейшем.

 
Проверю скорость отрисовки пустого канваса зеленого цвета размером с график и выложу сюда.
 
Реter Konow #:

Да, все проверю еще раз. Но тут дело в другом. Блок рисования ведь не только рисует. Внутри него логические лабиринты обрабатывающие приходящие события. Они нужны чтобы определять что нужно рисовать, что нет. Выбирать откуда брать изображения, куда и как их накладывать. Если бы это была простая функция отрисовки в 100 строк, то и говорить нечего. Но это массивный механизм для обеспечения рисования ВСЕГО.

Это стоит принимать во внимание.))

Нет, при правильной реализации событийная модель не отнимает больше микросекунды( одной миллионной доли), даже если там тысячи проверок.
Ищи косяк. 
И хватит оборонятся! На тебя никто не нападает, а хотят лишь помочь.
У меня заметные лаги (>300 мс) начинаются при 100 тысяч объектов, причем, привязанных к цене-время.
 
Nikolai Semko #:
Нет, при правильной реализации событийная модель не отнимает больше микросекунды( одной миллионной доли), даже если там тысячи проверок.
Ищи косяк. 
И хватит оборонятся! На тебя никто не нападает, а хотят лишь помочь.
У меня заметные лаги (>300 мс) начинаются при 100 тысяч объектов, причем, привязанных к цене-время.

Да я не обороняюсь)) Ха-ха. Просто объясняю. ))

Хорошо. Начну с простого теста. Один канвас на весь экран заполню одним цветом и замерю время. Ты сделай замеры своей функции отрисовки и тогда станет понятнее, есть ли у меня в коде тормоза. Возможно, есть. Не спорю. Нужно проверить.

 
Реter Konow #:

Да я не обороняюсь)) Ха-ха. Просто объясняю. ))

Хорошо. Начну с простого теста. Один канвас на весь экран заполню одним цветом и замерю время. Ты сделай замеры своей функции отрисовки и тогда станет понятнее, есть ли у меня в коде тормоза. Возможно, есть. Не спорю. Нужно проверить.

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


 
Nikolai Semko #:

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


С дебагом нет. Из за русского кода не получается. С профилировнием работал. Но давно. Я люблю по старинке кодировать. Так уж вышло.

Займусь этим завтра. Последние несколько дней я работал с 6-ти утра до 22-23 вечера. Подряд. Утомился немного.