Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 05.05.2014, 02:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

У меня ошибок нет - рисунки в массив грузятся норм., ошибка из-за запуска таймера, а в нём такое
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 i,j,k : Integer;
begin
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, zemlya[ Mas[I,j,0] ] );
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, obekti[ Mas[I,j,1] ] );
  Form1.Canvas.Draw(0,0,Buf);
end;
Buf не создаётся, не хватает Buf := TBitmap.Create при запуске и Buf.Free; при выходе
Ответить с цитированием
  #17  
Старый 05.05.2014, 03:45
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

ошибки нет.но на форме ничего не происходит
Ответить с цитированием
  #18  
Старый 05.05.2014, 10:41
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hsMapk
ошибки нет.но на форме ничего не происходит
А после создания объекта Buf ты ему размеры указываешь?:
Код:
Buf := TBitmap.Create;
Buf.Width := 32 * 20;
Buf.Height := 32 * 20;
Ответить с цитированием
  #19  
Старый 05.05.2014, 12:30
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

да указываю
Ответить с цитированием
  #20  
Старый 05.05.2014, 12:41
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А где Buf := TBitmap.Create; ?
Ответить с цитированием
  #21  
Старый 05.05.2014, 12:51
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

то есть вот так записать?
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Buf := TBitmap.Create;
  Buf.Width := 32 * 32;
  Buf.Height := 32 * 32;
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, zemlya[ Mas[I,j,0] ] );
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, obekti[ Mas[I,j,1] ] );
  Form1.Canvas.Draw(0,0,Buf);
end;
Ответить с цитированием
  #22  
Старый 05.05.2014, 12:51
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

в таймере,и на кнопке тоже был.так где мне его поставить?
Ответить с цитированием
  #23  
Старый 05.05.2014, 12:55
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

всё всем спасибо)нужно просто в таймере было так написать
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Buf := TBitmap.Create;
  Buf.Width := 32 * 32;
  Buf.Height := 32 * 32;
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, zemlya[ Mas[I,j,0] ] );
  for i:=0 to 19 do
    for j:=0 to 19 do
      Buf.Canvas.Draw(i*32,j*32, obekti[ Mas[I,j,1] ] );
  Form1.Canvas.Draw(0,0,Buf);
end;
тема закрыта
Ответить с цитированием
  #24  
Старый 05.05.2014, 16:10
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hsMapk
всё всем спасибо)нужно просто в таймере было так написать
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Buf := TBitmap.Create;
.....
Только освобождать не забывай, а то твоё приложение со временем съест всю память и положит винду:
Код:
Buf.Free;
Ответить с цитированием
  #25  
Старый 05.05.2014, 17:42
Аватар для hsMapk
hsMapk hsMapk вне форума
Новичок
 
Регистрация: 17.04.2014
Сообщения: 60
Версия Delphi: Delphi 7
Репутация: 5
По умолчанию

Buf.Free; а куда именно это вставить?в конце таймера?
Ответить с цитированием
  #26  
Старый 05.05.2014, 17:50
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hsMapk
Buf.Free; а куда именно это вставить?в конце таймера?
Да. Или вообще лучше один раз его создавать в FormCreate и один раз удалять в FormDestroy - так будет производительнее.
Да и прорисовку лучше делать не по таймеру, а по нужде - через FormPaint или на компоненте TPaintBox через его событие OnPaint.
И TImage в данном случае тоже вполне себе подойдёт, но на нём лучше не завязываться.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
hsMapk (05.05.2014)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter