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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2009, 17:25   #1
Gogia
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 1
Стрелка Разделение изображения на квадраты с помощью Canvas

Добрых всем времени суток!
На повестке дня у меня возник вопрос:

Хочу сделать карту местности для своей игры. Но при создании массива image(картинка размером 10 на 10 грузятся в ряд!) программа неимоверно тормозит. Мне посоветовали просто разделить большое изображение на квадраты с помощью Canvas. К сожелению у меня ещё мало опыта в работе с Delphi и я хотел бы попрасить у вас помощи!

Последний раз редактировалось mihali4; 19.11.2009 в 17:38.
Gogia вне форума Ответить с цитированием
Старый 20.11.2009, 04:44   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
при создании массива image
Это как? Просто накидали кучу TImage на форму?))


Можно сделать например так:

Поместить на форму компонент TImageList, в Инспекторе Объектов задать нужные свойства (размер 10х10 и.т.д.), после двойного щелчка на квадратике ImageList1 можем загружать в него картинки (размер должен быть одинаковым)...
А потом в цикле выводить на Canvas... Вот например в таймере (для проверки):
Код:
Var i: Integer;

. . .

Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
ImageList1.Draw(Form1.Canvas, i*32, 0, Random(9));
If i<9 Then
      Inc(i)
Else
      i:=0;
End;

// здесь:
// 9 - количество кадров минус единица (так как отсчёт ведётся с нуля)
// 32 - ширина кадра


А по идее надо делать так:

1. Объявляем переменную типа TBitmap (можно глобальную):
Код:
Var MyBitmap: TBitmap;
2. При запуске программы создаём объект:
Код:
MyBitmap:=TBitmap.Create;
после этого можно загрузить картинку из bmp-файла (ну или рисовать вручную):
Код:
MyBitmap.LoadFromFile(' {<полный или относительный путь к картинке>} ');
3. Можем выводить эту картинку на на форму (или в TImage; или в другой битмап) при помощи WinAPI-функции в заданных координатах:
Код:
Windows.BitBlt(Form1.Canvas.Handle, 0, 0, MyBitmap.Width, MyBitmap.Height, MyBitmap.Canvas.Handle, 0, 0, $00CC0020);
4. При выходе из программы (или когда битмап будет уже не нужным) обязательно освобождаем память:
Код:
MyBitmap.Free;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Квадраты. Xcopy Помощь студентам 5 14.10.2009 17:06
Квадраты Cpluser Общие вопросы C/C++ 8 20.09.2009 17:26
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Разделение строки xTANATOSx Общие вопросы Delphi 3 31.10.2007 21:27