Перейти к содержанию
Fire Monkey от А до Я
  • 0

Рисовать без Repaint


ader

Вопрос

Есть ли возможность рисовать в Paintbox напрямую, без вызова Repaint? Или есть ещё какой-то способ, чтобы выводить плавную анимацию графика поступающих данных? Сначала идёт отрисовка в буфер, а буфер на форму уже выводится в OnPaint через заданные промежутки времени (30-50мс). Картинка временами "залипает" - подозреваю, как раз из-за того, что сообщения на перерисовку, имея низкий приоритет, поступают неравномерно

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

beginupdate endupdate  для какого компонента? для  Paintbox?  и каким образом их использовать?

и зачем.. рисование вообще идёт не в основном потоке, в Paintbox только готовый битмап выводится. Оно не тормозит в общем-то, но как-то неравномерно идёт..

Ссылка на комментарий
  • 0

Да почти  для любого "графического" компонента   есть эти методы
 Откройте справку на Paintbox раздел методов - там есть описание обоих .
 Работаем на билдере так
 myPainbox->BeginUpdate();
//... тут код  чо мы там рисуем  - кривые . косые . графики окружности и прочие мегауравнения
myPainbox->EndUpdate();
myPainbox->Repaint();// выводим на экран все что накалякали в буфере

Оно и будет идти неравномерно ибо  вашему приложению система не обязана давать 100% процессорного времени :)

Ссылка на комментарий
  • 0

странные советы..  зачем myPainbox->BeginUpdate() , если я рисую не на Paintbox? и вообще рисую в фоне на невизуальном битмапе. В том-то и вопрос, что доступ к канве Painbox-а только через Repaint

 

Ссылка на комментарий
  • 0

Накидайте просто пример - рисование линии  в одну сторону и в другую по таймеру - ничего никуда не залипает  и не зависает.

Repaint    по таймеру вызывается ? 
Вы бы код приложили ...

 

Ссылка на комментарий
  • 0

в простом примере будет рисовать более-менее плавно. В реальной программе на форме много ещё чего другого рисуется, кроме графика, которому нужна плавность. В VCL проблемы не было - просто выводишь напрямую на канву Paintbox-а, минуя очередь сообщений. Вопрос вполне конкретный: как это сделать в Firemonkey?

Ссылка на комментарий
  • 0
  • Модераторы

В фмх канвас является общим для формы, а в вцл для каждого компонента свой.

рисовать нужно в методе онпайнт компонента или формы

Ссылка на комментарий
  • 0
1 час назад, ader сказал:

вы не чувствуете разницы между "нарисовать немедленно" и "отправить запрос на отрисовку"?

А с чего ты взял что контролируешь операционку? Она живёт своей жизнью и поплёвывает на самоуверенных кодеров )

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...