Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Перефразирую: в итоге у вас будет один советник с интерфейсом, несмотря на то, что одну часть делаю я, а вторая часть находится у вас. Это не помешает собрать воедино две части в один советник.
В общем, так и поступим. Я опубликую конструктор и буду здесь учить проектировать на нем gui. Документации пока нет, поэтому, кому интересно, следите за обучением.
Принято!
видео не записал, но скидываю пример. набросал по быстрому.
там 600 раскрывающихся списков.
поводите мышкой - при каждой событии и смене цвета происходит перерисовка общего CCanvas. получите ту самую интерактивность.
Итоговый размер можете видеть в свойствах битмапа - 1500х600 px (для сравнения с вашими 800 х 500 и 250 мс лагом). Что равно 900 000 точек, и перерисовываются все мгновенно. Ни о каких секундах речи быть не может.
Каждый список отрисовывается сначала у себя на своём канвасе в своём размере (чтоб не выйти за границы) и потом только плюхается на общий. То есть имеем 600 вызовов ResourceCreate на каждое событие от мышки.
Это значит, как видите по скорости реакции, что кадров достаточно и мультики показывать.
Разработчики MT дали удовлетворительный инструмент без тормозов (я про ResourceCreate битмапов)
А в открытом коде данный пример возможно увидеть?
Печально что проект ушел в закрытый режим (
Да никуда он не ушел.
А в открытом коде данный пример возможно увидеть?
А что вам не понятно в работе с канвасом?
1. он реагирует на события, как все другие графические объекты. То есть можно отслеживать координаты мышки при ее перемещении, реагировать на событие нажатия мыши и клавиатуры.
2. можно независимо менять цвет каждого пикселя.
Что еще надо? А дальше нужно немного мозгов и желания бессмысленно потратить много времени.
А что вам не понятно в работе с канвасом?
1. он реагирует на события, как все другие графические объекты. То есть можно отслеживать координаты мышки при ее перемещении, реагировать на событие нажатия мыши и клавиатуры.
2. можно независимо менять цвет каждого пикселя.
Что еще надо? А дальше нужно немного мозгов и желания бессмысленно потратить много времени.
Ну сам канвас не реагирует на события. А то что можно менять каждый пиксель то это и так понятно.
Меня интересовала реализация фрагментарной перерисовки канваса.
Но судя по всему многие остановились на полной перерисовке холста даже если на нем необходимо перерисовать только небольшую часть, то есть один элемент управления.
Ну сам канвас не реагирует на события. А то что можно менять каждый пиксель то это и так понятно.
Меня интересовала реализация фрагментарной перерисовки канваса.
Но судя по всему многие остановились на полной перерисовке холста даже если на нем необходимо перерисовать только небольшую часть, то есть один элемент управления.
Сам по себе канвас не реагирует на события, но она сам по себе и не существует.
Фрагментарная перерисовка - стоит начать делать и прояснится, если есть такая цель. Думаю должен быть массив элементов управления, у каждого элемента управления определены границы. Когда надо перерисовать какой-то элемент управления, надо пройтись по всем элементам управления, посмотреть, какие еще попадают в эту область, и только их перерисовать. Хотя бы так.
Сам по себе канвас не реагирует на события, но она сам по себе и не существует.
Фрагментарная перерисовка - стоит начать делать и прояснится, если есть такая цель. Думаю должен быть массив элементов управления, у каждого элемента управления определены границы. Когда надо перерисовать какой-то элемент управления, надо пройтись по всем элементам управления, посмотреть, какие еще попадают в эту область, и только их перерисовать. Хотя бы так.
Я именно так и построил. В принципе за основу я взял стандартную библиотеку, так как в ней очень хорошо проработаны моменты передачи событий и некоторые другие моменты. Анатолий создает группировку под каждый различный класс элементов, в стандартной же все приводится к единому базовому объекту.
В итоге получаем что WndObject содержит в себе полное описание наиболее общих свойств любого элемента управления (размеры, расположение, цвет фона, цвет границы, толщина границы, текст, картинка и так далее и так далее). Кроме того этот же класс содержит ссылку на родительский элемент управления. То есть если для элемента родитель не указан, тогда он создает свой объект канваса на графике, в противном случае он рисуется на канвасе родителя. В зависимости от положения (самостоятельный, подчиненный) рассчитываются и координаты расположения элемента. Дополнительно этот же объект имеет и массив, который содержит исходное описание области родителя, которую занимает этот элемент. Сама идея такая: если изменяется только сам элемент то перед его прорисовкой область пикселей заполняется матрицей пикселей родителя, а только потом накладывается новое состояние элемента управления. при таком подходе не требуется каждый раз перерисовывать весь канвас, ведь перерисовка - это обход всех элементов массива, причем рекурсивно при вложенных элементах. Для отрисовки и обновления конкретного элемента управления предполагается две функции: одна рисует элемент поверх родителя (или на чистом холсте) при создании всего контрола, вторая обновляет отображение только заданного элемента управления. Ну как-то так.
Пока "потерялся" в событийной модели: после каких изменений какие слои нужно перерисовывать.
Николай в своих примерах показывает что в принципе не стоит заморачиваться над хранением данных локальных областей поскольку перерисовка всего канваса работает настолько быстро что нет необходимости опускаться да частностей, достаточно всегда перерисовывать все сразу.