Въпрос # 488 …e свойство DoubleBuffered С уважение, Авдошин Алексей Виталиевич… (Работа с

Общност от програмисти Комуникация, помощ, обмяна на опит

Delphi.int.ru експерт

Други раздели на портала

Преминете към въпроса:

Статистика за днес:

Топ Експерти

Въпрос #488

Здравейте скъпи експерти! Как да зададете свойството DoubleBuffered на Timage

С уважение, Авдошин Алексей Виталиевич

Отговор №1. Експертните отговори:Dron

Здравейте. Само формулярът има свойството DoubleBuffered (Boolean). Всички останали компоненти го нямат. Прилага се автоматично към всичко, което принадлежи към този формуляр. Следователно трябва да се запише така: Form1.DoubleBuffered:=True; И това е достатъчно да направите само веднъж - като правило, в началото на програмата, т.е. на събитието OnCreate() на формуляра. Свойството наистина премахва трептенето по време на анимация. Макар и не напълно, но резултатът е много забележим. Успех!

Отговор №2. Експертни отговори:min@y™

Свойството DoubleBuffered е достъпно не само за формата, но и за всички класове, наследени от TWinControl. Ако TImage лежи, например, на TPanel, тогава можете да зададете Panel.DoubleBuffered:= True;

В приложението оставям функцията за настройка на свойството DoubleBuffered на всички компоненти на прозореца, лежащи върху родителския компонент, включително самия него.

  1. процедура SetDoubleBuffered(Parent: TWinControl; const DoubleBuffered: Boolean);
  2. вар
  3. Управление: TControl;
  4. Индекс: Цяло число;
  5. започвам
  6. ако не е назначен (родител)
  7. след това Изход;
  8. Parent.DoubleBuffered:=DoubleBuffered;
  9. за Index:=0 до Parent.ControlCount-1 направи
  10. започвам
  11. Control:=Parent.Controls[Индекс];
  12. акоУправлението е TWinControl
  13. край;
  14. край;

Въпрос мини-форум

Не правя анимация, просто плъзгам компонента с мишката.Когато компонентът се движи по формата, остава следа от картината (в случая на Form1.DoubleBuffered:=True

хм Но като цяло не е необходимо това свойство да се включва ненужно. Не е за тези цели. Плъзгането на компоненти трябва да работи добре. Може би проблемът е в кода за плъзгане и пускане?