Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите пожалуйста [Delphi, Windows]


Страницы:   1 2

Катя ©   (2002-12-02 16:09:00) 

Заставили меня написать программу (игру) для универа. Все дело в том, что нужно использовать стандартный набор компонентов Delphi5, то есть DelphiX не пройдёт ;). Так вот, написала примитивную игру (как просили), в которой всё рисуется на form1.canvas с каждым тактом таймера. Как и следовало ожидать, происходит мигание графики. Где то я видела как можно это преодолеть, только вот где --- не помню. :(

Может кто знает и поможет ?


MBo   (2002-12-02 17:54:00) [21]

это пример для случая, когда тебе нужно заполнить битмап (buffer) кусками других битмапов. Что именно неясно?
Опиши задачу чуть подробнее -что и как рисуешь.


Катя   (2002-12-02 17:50:00) [22]

Уловила :)
Не уловила только вот это

procedure TFrom1.UpdateFrame;
begin
...
Bitblt(Buffer.Canvas.Handle, ...); // Рисуем все что нужно в буфер
...
Bitblt(Buffer.Canvas.Handle, ...);
...
Bitblt(Self.Canvas.Handle, ...., Buffer.Canvas.Handle, .., SRCCOPY);
end;


MBo   (2002-12-02 17:15:00) [23]

doublebuffered:=true еще для формы установи, но здесь это вряд ли повлияет.
Ты уловила, что нужно ВСЕ рисовать на одном битмапе, потом его копировать на форму?


Катя   (2002-12-02 16:58:00) [24]

Может всё же кто ни будь пример вышлет ;) Буду очень рада...

Мой е-майл:KAT9I@mail.ru


Катя   (2002-12-02 16:34:00) [25]

Кстати я именно так и вывожу графику (Canvas.Draw(x,y,Bitmap)), всё равно мигает


Катя   (2002-12-02 16:32:00) [26]

Мой е-майл:KAT9I@mail.ru


MBo   (2002-12-02 16:28:00) [27]

Если, несмотря на пример Mirovodin, есть трудности в применении функции WinAPI BitBlt, можно воспользоваться методом Canvas.Draw(0,0,Bitmap)


Axis_of_Evil   (2002-12-02 16:24:00) [28]

1)таймер, как TThread
2)см. help "BitBlt"

слушай MBo, он умный

Припиши тут свой mail, пришлю пример


Mirovodin   (2002-12-02 16:23:00) [29]

Организуем Buffer (TBitmap);

Процедура прорисковки всего добра выглядит след-м образом:

procedure TFrom1.UpdateFrame;
begin
...
Bitblt(Buffer.Canvas.Handle, ...); // Рисуем все что нужно в буфер
...
Bitblt(Buffer.Canvas.Handle, ...);
...
Bitblt(Self.Canvas.Handle, ...., Buffer.Canvas.Handle, .., SRCCOPY);
end;

Все Bitblt делаем на невидимый буфер Buffer а потом кидаем его на Canvas формы.


Катя   (2002-12-02 16:17:00) [30]

> MBo:
Я не совсем поняла что вы посоветовали... прошу Вас, поподробнее?


MBo   (2002-12-02 16:12:00) [31]

рисовать на bitmap, потом Bitblt его на canvas


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо