![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пара вопросов по DelphiX [Delphi, Windows]
DanilinSA © (2004-05-24 14:14:00)Помогите решить пару вопросов:
1) В игровом проекте много ресурсов в виде картинок. Хранить в виде файлов - неудобно, хранить в DXImageList - страшно растет размер EXE файла. Так-как планируеться частая смена версий во время тестирования то не хочеться заставлять людей гонять неизменную графику по Инету.
Вопрос: Как хранить (если это можно) всю графику в DLL или отдельным файле ресурсов и при загрузке перегонять её в DXImageList?
2) Как из картинке в DXImageList вырезать фрагмент и нарисовать его на DXDraw.Surface (обычно пользуюсь Draw, но он копирует всю картинку). Это не периодический фрагмент в виде набора кадров!
Omar2002 (2004-07-05 13:50:00) [1]Когда картинок слишком много вобще советую разбить все на несколько DXG файлов, ну и при выпуске патчей и дополнений это кстати говоря будет удобно - добавил например парочку новых юнитов - заменил один DXG файл и бинарник. А вот еще одно удобное решение проблемы - если у тебя очень много прозрачных частей на спрайтах, то весь DXG файл можно одной программкой ужать - она выкидывает эти самые области, тем самым уменьшая объем файла, правда не всегда хорошо этот процесс закончивается, иногда теряются некоторые области или с цветами глюки, но зато если все сработает - получишь вполне хороший результат. Я в одном из своих проектов ужал DXGшник в полтора раза, а это примерно 300Кб весу.
ork (2004-05-29 11:51:00) [2]WinPopka: нет это я DanilinSA'у, специальным редактором работать проще чем имейджлистом.
WinPopka (2004-05-29 01:40:00) [3]Хмм..а модуля такого у вас нету ?
DanilinSA (2004-05-27 10:05:00) [4]для WinPopka:
1) На этапе отладки программы загоняешь все BMP в dximagelist.
2) После завершения отладки нажимаешь на dximagelist правой кнопкой и даешь команду: "Save...". Сохраняешь содержимое в DXG файле.
3) Пакуешь все DXG в ZIP формат.
4) Подключаешь к программе компонент или модуль для распаковки ZIP файлов.
5) В нужный момент в проге ( при инициализации или нажатии какой - либо кнопки):
а) Извлекаешь DXG из архива.
б) dximagelist.Items.LoadFromFile(...);
в) затираешь уже ненужный DXG
усё
WinPopka (2004-05-26 19:18:00) [5]это ты мне? какой такой редактор?
Ork (2004-05-26 18:25:00) [6]редактор DXG файлов грузи с http://daddy.mirgames.ru
WinPopka (2004-05-26 16:35:00) [7]DanilinSA
А не поделишься знанием?: как из zip`a брать бампшки и грузить в dximagelist?
DanilinSA (2004-05-26 09:45:00) [8]для kas-t:
1) Собственно к этому я и склоняюсь. При инициализации игры она будет извлекать DXG файл из ZIP архива и грузить его в DXImageList.
2) Мне не удалось резать картинку "на ходу" изменяя PattenHeight и PattenWidth !!! Причина неизвестна, но возможно нарезна происходит на этапе компиляции и при работе программы невозможна.
Я писал "Это не периодический фрагмент в виде набора кадров!" У меня в один BMP свалены иконки 16*16, 32*32 , 16*21 и т.д. Поэтому проще воспользоваться методами Surface для копирования фрагмента.
kas-t (2004-05-24 17:27:00) [9]1) А ты не пробывал делать так:
DXImageList.LoadFromFile('graphicsdata.dxg');
DXImageList.SaveToFile('graphicsdata.dxg');
Можно написать небольшой редактор редактирующий библиотеки картинок.
2) Тоже велосипед... В свойствах картинки в библиотеке DXImageList ставь PattenHeight и PattenWidth - высота и размер необходимого куска. А дальше эти куски получай так: DXImageList.items.Find('sprite1').Draw(DXDraw1.surface,x,y,ani); где Ani - это номер нужного тебе куска.
Thor (2004-05-24 17:16:00) [10]
> DanilinSA (24.05.04 14:14)
посмотри на DelphiGFX примеры хранения графики в архивах.
инфы по этой теме в нете - туева хуча.
поищи!
DanilinSA (2004-05-24 16:52:00) [11]Второй вопрос снимаеттся. Разобрался. Использовал конструкцию типа
MainForm.DXDraw.Surface.Draw(510, 404, KlastRound, MainForm.DXDialog.Items.Find('Rowgrid').PatternSurfaces[0], false);