{{notification.text}}

MirGames

Poiree
02.12.09 21:08
0
Здравствуйте, у меня вопрос: можно ли обратиться к конкретному пикселю конкретного рисунка и узнать его цвет? В данном случае я использую DelphiX и в спрайтимэйдж храню рисунки. Они у меня не прямоугольной формы, поэтому я не нужную область обрисосываю красным цветом и её вырезаю потом (такое свойство есть в DelphiX). Но проблема в том, что вырезать-то область вырезается, но все равно ведь эта вырезанная область остается частью рисунка и заполняет место на карте...
Чтобы этого все же избежать, я хочу сделать так: при заполнении массива карты (матрица размером с карту 1142х817) я бы проверял каждый пиксель рисунка и если он имеет красный цвет, то тогда чтобы этот пиксель не занимал карту... ВСё бы хорошо, но я не знаю, как обращаться к конкретным пикселям рисунка...
Подскажите, пожалуйста!
Отредактировано: 02.12.09 21:09
#1
02.12.09 22:33
0
Цитата
Чтобы этого все же избежать, я хочу сделать так: при заполнении массива карты (матрица размером с карту 1142х817) я бы проверял каждый пиксель рисунка и если он имеет красный цвет, то тогда чтобы этот пиксель не занимал карту... ВСё бы хорошо, но я не знаю, как обращаться к конкретным пикселям рисунка...
Подскажите, пожалуйста!

помоему это только прибавит тормозов в и без того тормозном дельфииксе. переходи на более низкоуровневые невизуальные канвасные средства =)
#2
03.12.09 02:18
0
Лол, вот уж тогда тормозов у него будет...
#3
03.12.09 03:08
0
вот ненада, gdi не совсем тормоз :))
#4
Poiree
03.12.09 04:02
0
Нет, народ, это мне нужно в редакторе карт - пусть потормозит, но зато получится качественная карта! Подскажите, пожалуйста, как такое реализовать в DelphiX... Canvas'ом я могу это сделать... а вот в Делфиикс? Надо обращаться к рисункам, хранящимся в DXImageList. Но там нет функций канвы...
#5
03.12.09 05:00
0
попробуй свой вопрос украсить иллюстрацией, я совсем перестал понимать что нужно получить :(
#6
03.12.09 06:37
0
antonn
Во первых, таки тормоз ;) Во вторых, пригодную для реального использования скорость он выдает только в умелых руках. Собственно, на этом форуме только ты делаешь нечто достаточно шустрое на GDI. У топикстартера боюсь будет 1fps :)
Да и когда я в последний раз видел сорец "на GDI" - от гди там использовалась ровно одна функция - вывести содержимое битмапа-буфера на экран. Все остальное делалось ручками на ММХ. Называть это "графика на GDI" я бы не стал.
#7
03.12.09 07:18
0
Vga
Цитата
Собственно, на этом форуме только ты делаешь нечто достаточно шустрое на GDI.
я тоже умею.
пруф линк.

anton
Цитата
попробуй свой вопрос украсить иллюстрацией, я совсем перестал понимать что нужно получить sad.gif
+1

Poiree
Цитата
Надо обращаться к рисункам, хранящимся в DXImageList. Но там нет функций канвы...
зато содержимое DXImageList[i] можно загружать и выгружать через обычный TBitmap. А у TBitmap есть канва.
Отредактировано: 03.12.09 07:23
#8
03.12.09 07:23
0
Adler
Ну да, и еще может пара-другая человек. Просто antonn самый заметный фанат GDI :)
Хотя спрайтовая игрушка и линии по ссылке - чуток все же разные вещи.
#9
03.12.09 13:26
0
Vga
Цитата
Да и когда я в последний раз видел сорец "на GDI" - от гди там использовалась ровно одна функция - вывести содержимое битмапа-буфера на экран. Все остальное делалось ручками на ММХ. Называть это "графика на GDI" я бы не стал.

есть более ранние полностью "гди-совместимые" поделки :)
#10
Poiree
03.12.09 22:17
0
В общем подетально: есть карта, размером 1142х817. Есть кучу разновидностей гор разных размеров и форм... Также, существуют записи, хранящие параметры всех созданных на карте объектов, а также саму карту - это матрица, размером 1142х817:
Код
type on_map_obj=record
  map_razm: array [0..1142, 0..817] of 0..2;
  param_obj:array [1..200] of obj;
  end;


Когда ставят одну из гор на карту (кликают по конкретному объекту image, который отвечает за определенный вид горы, затем в место на карте, куда надо поставить гору) - массив map_razm изменяется таким образом, что заполняется единицами прямоугольная область массива карты с начальными координатами - координаты клика мыши. Но гора имеет не прямоугольное изображение и поэтому займет на карте много лишнего места. В DelphiX есть такое свойство (Transparent), которое вырезает лишнюю область - в итоге гора будет выглядеть такой, какая она есть, а лишнее, не нужное место, будет вырезано. Это хорошо, но ведь размеры она будет иметь все те же! Так вот, есть выход - всю ненужную область я закрышиваю красным цветом, с помощью свойства Transparent вырезаю весь красный цвет, который есть на рисунке горы, а чтобы массив карты не учитывал эти вырезанные пиксели, я хочу поставить проверку: если у данного рисунка цвет пикселя красный, то тогда этот пиксель на карте не принимает значение 1, а остается нулем, что говорит о том, что эта клетка свободна...
#11
04.12.09 01:43
0
Poiree
Мутно как-то, все равно... =)
Попробуй рисовать карту не 1-0, а просто работая через потоки... у меня в WE так сделано... =)
#12
04.12.09 02:01
0
я кажется понял, это типа блитинг с транспарент_колором, нужно чтобы "прозрачные" места горы не меняли прозрачным цветом массив?
но общими словами не описать, нужен проект, хотя бы часть
#14
Poiree
04.12.09 04:23
0
John S Moff
Дело в том, что у тебя в одной клетке все изображение умещается, а у меня попиксельно сделано - тут надо ещё учитывать размеры объектов.
antonn
А фишка с прозрачностью в том, что это только визуальное отображение, а сама гора имеет такие же размеры - 200х200, например! и будет занята карта, начиная с координат клика мыши и продолжая 200 по х и 200 по у. Горы могут быть совсем не прямоугольной формы и тогда получится, что многие пиксели, которые заняты на карте, на самом деле не должны учитываться, как гора...
#15
04.12.09 06:15
0
Poiree
Я про другой маппер говорю... который я тебе давал - это древнющий =)) А который у меня используется в World Engine... там по другому сделано... Попробую от-туда лишнее убрать и как демку тебе скинуть... чтобы понял о чем я говорю.

Посмотри вот это (сделано на DelphiX) попиксельная проверка... принцип этот нужен?
SP.rar
Отредактировано: 05.12.09 03:23
#16
Poiree
05.12.09 03:45
0
John S Moff
Да, хотелось бы посмотреть на эту технологию! можешь исходник кинуть?
#17
05.12.09 07:21
0
Poiree
OK, завтра залью...
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}