Chief-NET

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Chief-NET » Программирование » Djinn Tile Mapper


Djinn Tile Mapper

Сообщений 41 страница 60 из 184

41

длины (в поле "Максимальная длина").

Длину можно мышкой менять с помощью Ctrl вроде.

42

Не, с помощью Shift.
Надо будет подробный Help написать к программе, а то я о некоторых возможностях узнал только после "вскрытия".
И про двойной клик по карте, и про Shift про этот, и про рисование по редактору тайла зажатой кнопкой мыши  :rolleyes:

Отредактировано alex_231 (2012-03-05 17:21:56)

43

Кстати, набросал тут список изменений:

1. Доработан Relative-sеаrch, теперь с интервалом (предложил Guyver)
2. Доработано отображение тайлов переменных размеров в окне "Текст, код и прочий мусор"
3. Добавлена возможность изменять размеры рабочей области в окне "Текст, код и прочий мусор" (предложил Guyver)
4. Доработано отображение блоков тайлов в окне "Текст, код и прочий мусор"
5. Добавлена возможность изменять размеры блоков тайлов в окне "Текст, код и прочий мусор" (предложил TrikZter)
6. Доработано использование таблицы тайлов, теперь одному тайлу/блоку может соответствовать последовательность из N байт (предложил Djinn)
7. Добавлено перетаскивание тайлов по карте тайлов при помощи мыши, тайлы меняются местами (предложил Guyver)
8. Доработано окно "Редактор выбранного тайла", теперь в заголовке отображается не только номер и адрес начала тайла, но и его размер.
9. Доработана палитра для 16-цветных режимов (предложил Guyver)
10. Отключено использование режима 16х16 (не вижу в нём смысла, после реализации вышеперечисленных изменений)
11. Разделено выделение тайлов и блоков
12. Доработан интерфейс, изменяемые размеры окон и скроллбары

Вроде ничего не забыл.

Отредактировано alex_231 (2012-03-05 20:02:43)

44

Столкнулся с проблемой: в XP программа при запуске выдает ошибку "Недостаточно памяти для выполнения команды." и совсем не работает: Image рабочей области, карты тайлов и окна редактирования тайла не заполняются.
Свободной памяти при этом было более 550 Мб (всего 1024), кто-нибудь знает, почему такое могло произойти?
В семёрке всё запускается без проблем (правда и памяти там 4096).
Неужели после всего Djinn Tile Mapper стал таким прожорливым?

Отредактировано alex_231 (2012-03-05 20:29:36)

45

Кинь последнюю версию, хоть глянуть в ХР...

46

Вот, посмотри.

47

Точно, не пашет...

48

Я тут посчитал, что под Image карты тайлов и рабочей области должно отводиться по 256 Мб оперативной памяти, если я правильно понимаю суть происходящего.

Видимо придется ограничить размеры блоков тайлов не 16х16, а 8х8, также и с размерами рабочей области, не 256х256, а 128х128 (или 64х64 - как повезет).

49

Можно, если что, оставить для висты и семёрки версию помощнее потом? ;о) Или вообще делать рабочую область только для семёрки...

Отредактировано Guyver (2012-03-06 11:29:40)

50

Я тоже подумал, сначала написать полнофункциональную версию под семёрку, а потом сделать ей обрезание для ХР.
А кто-нибудь знает, как программно определить версию системы?
Если реализовать проверку при запуске, то можно будет обойтись без обрезания.

Отредактировано alex_231 (2012-03-07 19:56:38)

51

Столкнулся с проблемой: в XP программа при запуске выдает ошибку "Недостаточно памяти для выполнения команды." и совсем не работает: Image рабочей области, карты тайлов и окна редактирования тайла не заполняются.
Свободной памяти при этом было более 550 Мб (всего 1024), кто-нибудь знает, почему такое могло произойти?
В семёрке всё запускается без проблем (правда и памяти там 4096).
Неужели после всего Djinn Tile Mapper стал таким прожорливым?

Ну вы даёте, ребята.

52

А ты думал, бесконтрольный аппетит никогда ни к чему хорошему не приводил  ;)

53

А ты думал, бесконтрольный аппетит никогда ни к чему хорошему не приводил  ;)

Любая моя даже самая сложная программа, которая требует много памяти, работает без проблем в XP. Я думаю, у тебя там утечки какие-то.

54

Ну, не знаю, я просто увеличил размер Image'й на dataform и tilemapform и после этого программа перестала работать, если я уменьшаю размеры, она опять работает.

55

Ну, не знаю, я просто увеличил размер Image'й на dataform и tilemapform и после этого программа перестала работать, если я уменьшаю размеры, она опять работает.

Десятикратно что ли?:)

56

Не, шестнадцатикратно  B)   хе, а ты думал, десятикратно - это много? :) как говорится: "впихнуть невпихуемое."
Максимальные величины:
Количество элементов (тайлов или блоков) на тайловой карте - 16х16
Ширина (высота) блока - 16 (тайлов)
Ширина (высота) тайла - 16 (пикселей)
Ширина (высота) пиксела - 2
если перемножить 16х16х16х2=8192 - максимальная ширина (высота) картинки в Image на tilemapform

аналогично для datamapform:
Количество элементов на карте данных - 256х256 (тайлов)
Ширина (высота) тайла - 16 (пкселей)
Ширина (высота) пиксела - 2
если перемножить 256х16х2=8192 - максимальная ширина (высота) картинки в Image на datamapform

Вот почему я и говорю, что придется урезать версию для XP.

Отредактировано alex_231 (2012-03-07 19:51:27)

57

Я тут посчитал, что под Image карты тайлов и рабочей области должно отводиться по 256 Мб оперативной памяти, если я правильно понимаю суть происходящего.

Размер Image можно менять в зависимости от настроек. Зачем всегда держать его в максимальном размере?

58

А никто его и не держит в максимальном размере, просто при создании компонента под него в памяти отводится определенный буфер и увеличить (уменьшить) этот буфер извне уже невозможно (только если destroy'ить и create'ить компонент заново), поэтому, если на форме разместить Image размером 128х128, а потом программно увеличить его до 256х256, то отображаться на экране всё равно будет только картинка 128х128, а остальное место останется незаполненным, сам попробуй.
Вот, например:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.Pixels[0,0]:=clblack;
image1.Canvas.CopyRect(bounds(0,0,128,128),image1.Canvas,bounds(0,0,1,1));
image1.Width:=256;
image1.height:=256;
image1.Canvas.CopyRect(bounds(0,0,256,256),image1.Canvas,bounds(0,0,128,128));

end;

Отредактировано alex_231 (2012-03-07 22:12:15)

59

Мда, сам подумал, подумал, а ведь глупость сморозил: изображение хранится в свойстве picture.bitmap, а его размеры изменению поддаются запросто и если сделать так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.Pixels[0,0]:=clblack;
image1.Canvas.CopyRect(bounds(0,0,128,128),image1.Canvas,bounds(0,0,1,1));
image1.Width:=256;
image1.height:=256;
image1.Picture.Bitmap.Width:=256;
image1.Picture.Bitmap.height:=256;
image1.Canvas.CopyRect(bounds(0,0,256,256),image1.Canvas,bounds(0,0,128,128));

end;

то всё нормально работает.

С одним разобрались, теперь нужно узнать, как научить программу распознавать версию винды, чтобы выставлять ограничения на размеры этого самого bitmap.

60

Мда, сам подумал, подумал, а ведь глупость сморозил: изображение хранится в свойстве picture.bitmap, а его размеры изменению поддаются запросто и если сделать так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.Pixels[0,0]:=clblack;
image1.Canvas.CopyRect(bounds(0,0,128,128),image1.Canvas,bounds(0,0,1,1));
image1.Width:=256;
image1.height:=256;
image1.Picture.Bitmap.Width:=256;
image1.Picture.Bitmap.height:=256;
image1.Canvas.CopyRect(bounds(0,0,256,256),image1.Canvas,bounds(0,0,128,128));

end;

то всё нормально работает.

С одним разобрались, теперь нужно узнать, как научить программу распознавать версию винды, чтобы выставлять ограничения на размеры этого самого bitmap.

Да не нужны там никакие ограничения. Ты думаешь как мощные программы работают на любых системах?


Вы здесь » Chief-NET » Программирование » Djinn Tile Mapper