Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как про большом числе TImage повысить fps? 
V
    Опции темы
Rogvold
Дата 9.4.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Проблема такова: имеется форма, на которой много (порядка тысячи) компонентов TImage размера 48х48, отображающих маленькие картинки формата jpg или bmp.
Собственно, сама проблема заключается в том, что все это дело нещадно тормозит, и при передвижении мерцает.
Пожалуйста, посоветуйте что в данном случае можно предпринять и, возможно, как вообще следует при таком кол-ве изображений реализовать программу.

Буду весьма благодарен. smile 
PM MAIL   Вверх
Snowy
Дата 9.4.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Быстрое решение - DoubleBuffereв := true;
Правильное - один TImage.
ЗЫ. Я подозреваю, что картинки вовсе не 48х48, а большего размера, но стретченые... В этом случае будет не тормозить, а дико и невероятно тормозить ;-)
PM MAIL   Вверх
Rogvold
Дата 9.4.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Нет, сами картинки как раз меньше - 30х30, но их необходимо было стречнуть до 48х48.
А как можно через 1 TImage это сделать?
PM MAIL   Вверх
Snowy
Дата 9.4.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(Rogvold @  9.4.2007,  11:50 Найти цитируемый пост)
сами картинки как раз меньше - 30х30
Всё равно - стретч хавает ресурсы. Хоть в данном случае и меньше, чем на больших картинках.

Цитата(Rogvold @  9.4.2007,  11:50 Найти цитируемый пост)
А как можно через 1 TImage это сделать?
Создать имадж нужного размера и на нём нарисовать все нужные картинки.
После этого ничего уже не стретчится, выводится всё разом.
PM MAIL   Вверх
Rogvold
Дата 9.4.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Цитата
Создать имадж нужного размера и на нём нарисовать все нужные картинки

Извините, я просто новичок немного... как картинки нарисовать на канву? 
PM MAIL   Вверх
Snowy
Дата 9.4.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



На канву TImage'а
Canvas.StretchDraw
Подробнее - в поиск и справку.
PM MAIL   Вверх
iddqd
Дата 9.4.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: нет
Всего: 2



Один из вариантов:
CopyRect
 Copies part of an image from another canvas into the canvas.
 


--------------------
PM MAIL   Вверх
Rogvold
Дата 9.4.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Snowy, iddqd, спасибо большое! smile 
PM MAIL   Вверх
Rogvold
Дата 9.4.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



И все-таки, не мог бы мне кто-нибудь помочь - не могу никак на канвасе имага нарисовать картинку. Если есть возвожность, киньте в меня нужной процедуркой или желательно маленьким примерчиком.
PM MAIL   Вверх
Rogvold
Дата 10.4.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Пишу вот что:
Код

implementation
var
pct:TBitmap;

..

procedure Tfrmmain.FormCreate(Sender: TObject);
begin
pct.Create;
pct.LoadFromFile('gfx\tilesets\104.bmp');
mim.Canvas.Draw(0, 0, pct);
end;


Вылезает еррор Access Violation. Картинка существует. 
Подскажите, из-за чего такое может быть?
PM MAIL   Вверх
Snowy
Дата 10.4.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



PM MAIL   Вверх
Rogvold
Дата 10.4.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Cпасибо больущее!!  smile 
Если б мог - сразу пять плюсов поставил ;)
С меня пиво  smile 

P.S. тему можно закрыть - проблема решена ;)

Это сообщение отредактировал(а) Rogvold - 10.4.2007, 17:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.