Как сделать изменение размера формы более плавным?

StackOverflow https://stackoverflow.com/questions/1454190

Вопрос

При изменении размера формы с большим количеством элементов управления форма выглядит плохо из-за мерцания.Какие советы помогут сделать изменение размера формы более плавным?

Это было полезно?

Решение

procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
  Self.DisableAlign;
end;

procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
  Self.EnableAlign;
end;

Другие советы

Попробуйте использовать WM_SETREDRAW (нет БлокированиеWindowUpdate).

Вы также можете посмотреть Отложить окноPos.

Сложные формы часто состоят из вложенных панелей, и процесс перерисовки может вызвать мерцание.Если это относится к вашему проекту, есть два простых решения, которые мощь помощь:

  1. Отключить свойство FullRepaint на ваших панелях.
  2. Включить свойство DoubleBuffered в вашей форме.Вы не найдете это свойство в инспекторе объектов, поэтому поместите DoubleBuffered := true; в ФормеСоздать.

Я обошел это следующим образом:

  1. В событии формы «OnResize» необходимо скрыть все дочерние элементы управления, а затем запустить таймер с тактом около 500 мс.
  2. Когда таймер сработает, отключите его, а затем сделайте все дочерние элементы управления видимыми.

Поэкспериментировав с этим действием, вы получите форму, которая становится пустой, пока вы ее изменяете, но затем аккуратно заполняется, когда вы ее отпускаете.

Бри

Я избегаю мерцания, выравнивая не более 1 не-alClient компонент для каждого родителя, всегда в сочетании с alClient (например.а TPanel), чтобы содержать все остальные компоненты.Сгруппируйте их в панели без границ.

Допустим, вы хотите согласовать три вещи: alLeft, alTop и alClient для основного вида.Не делайте этого: Form alTop alLeft alClient // your main view

Но вместо этого вставьте их следующим образом: Form alTop alClient // panel to avoid flicker alLeft alClient // your main view

Та же история с встраиванием нескольких alTop элементы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top