Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2009, 16:10   #1
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
Печаль перемещение изображения на фоне

описание пробемы: процедура Jump перемещает изображене по фону в одном из 4х направлений (зависит от переменой dir). перемещение роисходит, но почему-то видны только начальное и конечное положение движущейся картинки... промежуточных положений не обозревается... никак не пойму в чем секрет...

Код:
const
cl=50;

var
...
  Ox, Oy, dx, dy: integer;
...

procedure TForm1.Jump;
begin
 case dir of
  0:   begin
        dx:=cl;  dy:=0;
       end;
  1:   begin
        dx:=0;   dy:=-cl;
       end;
  2:   begin
        dx:=-cl; dy:=0;
       end;
  3:   begin
        dx:=0;   dy:=cl;
       end;
 end;

 dx:=Ox+dx;
 dy:=Oy+dy;

 while not ((Ox=dx) and (Oy=dy)) do
  begin
    case dir of
     0: Ox:=Ox+5;
     1: Oy:=Oy-5;
     2: Ox:=Ox-5;
     3: Oy:=Oy+5;
    end;

    CopyBuffer;
    sleep(200);
  end;
end;


procedure TForm1.CopyBuffer;
begin
 {очищение буфера}
 Buf.Canvas.FillRect(Rect(0, 0, Buf.Width, Buf.Height));


 {копирование фона в буфер построения изображения}
 Buf.Canvas.CopyRect(Rect(0, 0, Buf.Width, Buf.Height),
              Buf2.Canvas, Rect(0, 0, Buf.Width, Buf.Height));


 obj.Canvas.FillRect(Rect(0, 0, obj.Width, obj.Height));
 Objs.GetBitmap(dir,obj.Picture.Bitmap);
 Buf.Canvas.Draw(x,y,Obj.Picture.Graphic);

 Screen.Canvas.FillRect(Rect(0, 0, Screen.Width, Screen.Height));
 {копирование буфера на экран}
 Screen.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height),
               Buf.Canvas, Rect(0, 0, Screen.Width, Screen.Height));
end;
Костян Пират вне форума Ответить с цитированием
Старый 09.03.2009, 16:21   #2
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Посмотри http://www.programmersforum.ru/showthread.php?t=25669
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 09.03.2009, 17:55   #3
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

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

Последний раз редактировалось Костян Пират; 09.03.2009 в 17:55. Причина: орфография
Костян Пират вне форума Ответить с цитированием
Старый 09.03.2009, 18:04   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ошибка в непонимании сути работы винды...
Строка
Application.ProcessMessages;
поможет "отцу русской демократии"...
mihali4 вне форума Ответить с цитированием
Старый 09.03.2009, 18:21   #5
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ошибка в непонимании сути работы винды...
это правда
но мы университетов не кончали так что это всё маленькое хобби...

mihali4 спасибо! проблема решена
Костян Пират вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Картинка на фоне MDI формы... Как? masterdela Общие вопросы Delphi 4 13.01.2009 14:41
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Перемещение компонентов _SERGEYX_ Общие вопросы Delphi 2 10.04.2008 13:33
Перемещение файлов Nasya Microsoft Office Excel 2 13.10.2007 20:37