Конференция "Media" » Мелькание при перемещении объекта TShape [D7, WinXP]
 
  • Winni (26.10.10 16:33) [0]
    Здравствуйте !

    Если не принимать особых мер, то при движении картинки (например, объекта Shape) или при изменении цвета в runtime наблюдается мелькание. Например, такой код:
    procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
    label me1;
    begin
    me1:
     begin
       Shape2.Left:= Shape2.Left + 1;
       Application.ProcessMessages;
       sleep(30);
     end;
     if Shape2.Left < 580 then goto me1;
     Shape2.Left:= 104;
    end;

    Эффект давно известный. Думал, что это неизбежно, но
    наверное, опытные программисты знают решение ?
  • antonn © (26.10.10 21:03) [1]
    если нужна просто анимация - то стоит рисовать на буферном битмапе и потом его выводить на форму. И не использовать sleep() в основном потоке программы
  • Winni (27.10.10 04:04) [2]
    Спасибо.

    Но если не использовать sleep, то как можно задержать картинку на экране перед ее изменением ?
  • antonn © (27.10.10 13:19) [3]
    сделать обычным таймером передвижение
  • Winni (29.10.10 15:03) [4]
    Спасибо.
    Действительно, про таймер как-то забыл. Наверное, потому, что sleep написать проще :-)
  • babanyukv (23.11.13 23:22) [5]
    Эффект известный и предсказуем.
    _______________________________
    http://www.etc-russia.ru/
 
Конференция "Media" » Мелькание при перемещении объекта TShape [D7, WinXP]
Есть новые Нет новых   [134427   +37][b:0][p:0]