Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Delphi

Ответ
 
Опции темы
Старый 17.08.2011, 16:40   #1
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Плохо Проблема с прорисовкой

Доброго дня всем.

У меня такой вопрос: как правильно прорисовывать в дельфине графику?

Тоесть проблема в том, что при прорисовки (canvas.rectangle (0,0,100,100) например) графика не заноситься в графический буфер, а выводится сразу на экран. По этому если циклически выводить много графики, начинается мерцание, которое выводит уже через 5 секунд.

В МидлетПаскале есть такая процедура "Repaint". А если ли чтото подобное в дельфи? Или как вообще правилно работать с графикой? Подскажите!
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 17.08.2011, 16:51   #2
Girugamesh
AnyKey`щик
 
Регистрация: 03.07.2011
Сообщений: 8
Написано 6 полезных сообщений
(для 27 пользователей)
Ответ: Проблема с прорисовкой

Я делаю так: Создаю дополнительный Битмап- Bitmap:=Tbitmap.create(), рисую в его канвас, затем методом Draw на основной канве отображаю Bitmap: Canvas.Draw(0,0,Bitmap);
p.s. Еще есть свойство DoubleBuffer
(Offline)
 
Ответить с цитированием
Старый 18.08.2011, 17:08   #3
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Проблема с прорисовкой

что-то никак не рисуется

procedure TForm1.FormCreate(Sender: TObject);
begin
qwe:=Tbitmap.create;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  for i:=1 to 100 do
    begin
    qwe.Canvas.Brush.Color:=RGB(random (256),random (256),random (256));
    qwe.Canvas.Rectangle(25,25,random(100),random(100));
    end;

    form1.canvas.Draw(0,0,qwe);
end;
нажимаю кнопку - ничего не происходит

"p.s. Еще есть свойство DoubleBuffer" где его искать то?
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 19.08.2011, 00:41   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Проблема с прорисовкой

Перед тем, как рисовать на битмапе (точнее, на его Canvas), нужно задать размеры битмапа:
procedure TForm1.FormCreate(Sender: TObject);
begin
qwe:=Tbitmap.create;

qwe.Width:=128;
qwe.Height:=128;

end;
А DoubleBuffered:boolean - это свойство формы.

И еще, советую рисовать не на форме, а на TImage.
Через буфер, естественно.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:23.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com