Мерцает даже при удалении несуществующего объекта.
Все построения рисую в одном большом OBJ_BITMAP_LABEL. Для создания всплывающих подсказок создаю другие OBJ_BITMAP_LABEL на нужном уровне с параметром OBJPROP_TOOLTIP. Что бы не копились эти дополнительные OBJ_BITMAP_LABEL просто удаляю их при необходимости обновить построения. Но из-за этого при прокрутке чарта появляется мерцание. Может кто сталкивался с такой проблемой?
Все построения рисую в одном большом OBJ_BITMAP_LABEL. Для создания всплывающих подсказок создаю другие OBJ_BITMAP_LABEL на нужном уровне с параметром OBJPROP_TOOLTIP. Что бы не копились эти дополнительные OBJ_BITMAP_LABEL просто удаляю их при необходимости обновить построения. Но из-за этого при прокрутке чарта появляется мерцание. Может кто сталкивался с такой проблемой?
Создавайте необходимое количество обьектов в ините, далее просто их модифицируйте, в деините удаляйте.
А мерцание происходит из за не верно спроектированного кода, подозреваю что объекты мерцают ещё и когда мышью двигаете.
Создавайте необходимое количество обьектов в ините, далее просто их модифицируйте, в деините удаляйте.
А мерцание происходит из за не верно спроектированного кода, подозреваю что объекты мерцают ещё и когда мышью двигаете.
Из наблюдений. Начинает мерцать при добавлении ChartRedraw и ObjectsDeleteAll. От ObjectDelete не мерцает.
ObjectDeleteAll лучше не применять во время работы программы. Только в OnDeinit.
Суть работы с графикой:
- Составляем список объектов, которые должны быть на экране (новый список) и тех, которые уже есть (старый список). В принципе, старый список должен быть доступен из предыдущей итерации работы программы - это предыдущий новый список.
- Сравнение нового и старого списка. Находим объекты в новом списке, которые отсутствуют в старом списке. Отображаем такие объекты на экране.
- Находим в обоих списках полностью одинаковые объекты, т. е. те, которые не нуждаются в обновлении. Удаляем их из старого списка.
- Поиск объектов в старом списке, которых нет в новом списке. Удаляем такие объекты на экране и, соответственно, из старого списка.
- Поиск объектов, которые изменились. Изменяем на экране и удаляем из старого списка.
- К этому моменту, если все сделано правильно, в старом списке не осталось объектов. Вот только тут делается ChartRedraw. То есть вызов функции ChartDeraw должен быть один на всю программу, равно, как и ObjectDeleteAll.
ObjectDeleteAll лучше не применять во время работы программы. Только в OnDeinit.
Суть работы с графикой:
- Составляем список объектов, которые должны быть на экране (новый список) и тех, которые уже есть (старый список). В принципе, старый список должен быть доступен из предыдущей итерации работы программы - это предыдущий новый список.
- Сравнение нового и старого списка. Находим объекты в новом списке, которые отсутствуют в старом списке. Отображаем такие объекты на экране.
- Находим в обоих списках полностью одинаковые объекты, т. е. те, которые не нуждаются в обновлении. Удаляем их из старого списка.
- Поиск объектов в старом списке, которых нет в новом списке. Удаляем такие объекты на экране и, соответственно, из старого списка.
- Поиск объектов, которые изменились. Изменяем на экране и удаляем из старого списка.
- К этому моменту, если все сделано правильно, в старом списке не осталось объектов. Вот только тут делается ChartRedraw. То есть вызов функции ChartDeraw должен быть один на всю программу, равно, как и ObjectDeleteAll.
ObjectDeleteAll лучше не применять во время работы программы. Только в OnDeinit.
Суть работы с графикой:
- Составляем список объектов, которые должны быть на экране (новый список) и тех, которые уже есть (старый список). В принципе, старый список должен быть доступен из предыдущей итерации работы программы - это предыдущий новый список.
- Сравнение нового и старого списка. Находим объекты в новом списке, которые отсутствуют в старом списке. Отображаем такие объекты на экране.
- Находим в обоих списках полностью одинаковые объекты, т. е. те, которые не нуждаются в обновлении. Удаляем их из старого списка.
- Поиск объектов в старом списке, которых нет в новом списке. Удаляем такие объекты на экране и, соответственно, из старого списка.
- Поиск объектов, которые изменились. Изменяем на экране и удаляем из старого списка.
- К этому моменту, если все сделано правильно, в старом списке не осталось объектов. Вот только тут делается ChartRedraw. То есть вызов функции ChartDeraw должен быть один на всю программу, равно, как и ObjectDeleteAll.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Все построения рисую в одном большом OBJ_BITMAP_LABEL. Для создания всплывающих подсказок создаю другие OBJ_BITMAP_LABEL на нужном уровне с параметром OBJPROP_TOOLTIP. Что бы не копились эти дополнительные OBJ_BITMAP_LABEL просто удаляю их при необходимости обновить построения. Но из-за этого при прокрутке чарта появляется мерцание. Может кто сталкивался с такой проблемой?