прекратите мерцать

Мне записали старую программу в Borland Паскаль и в Delphi, если я использую Form1. Холст. LineTo и MoveTo функционируют, я получаю мерцающий эффект. Кто-либо может сказать мне, как избавиться от мерцания?

9
задан Kromster says support Monica 21 September 2018 в 19:44
поделиться

3 ответа

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

Этот термин также относится к поддерживаемым аппаратным средствам, таким как возможность обмена буфером отображения видео whole с альтернативным буфером, который используется в специализированных системах, таких как консольные видеоигры.

.
14
ответ дан 4 December 2019 в 06:11
поделиться

Попробуйте установить DoubleBuffered true в Form.OnCreate.

.
20
ответ дан 4 December 2019 в 06:11
поделиться

Хотя использование двойной буферизации обычно является лучшим решением, оно не всегда является правильным и определенно не самым экономичным решением. Однако, если вы рисуете только часть образа, то я бы выбрал и это решение, установив DoubleBuffered в true, как упоминалось в других комментариях.

Однако, если вы каждый раз при рисовании будете заполнять область компонентов целиком, то, возможно, захотите выбрать другой подход. Если установить ControlStyle в csOpaque, то можно избежать стирания фона компонента и тем самым удалить источник мерцания, не прибегая к двойному буферированию. Это, конечно, требует от вас отрисовки всей области компонентов, так что решение действительно подходит только в этом случае.

В общем случае, если потребление памяти не имеет значения, я бы тоже пошел на двойную буферизацию, я просто хотел предложить вам альтернативу. :)

.
5
ответ дан 4 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: