Простая графика на C# с System.Drawing по умолчанию

Я хотел бы разработать простую игру «укажи и щелкни» на С# с библиотеками рисования по умолчанию... без openGL/SDL/Tao для этого проекта.

Достаточно сказать, что мне любопытно, как лучше всего рисовать интерактивные изображения слоями в форме.

В идеале я бы

1) Слой окружения (дорожки, двери и т. д.)

2) Объектный слой (предметы)

3) Слой персонажа (враги)

В идеале слои под другими слоями по-прежнему будут видны, поэтому я все равно смогу видеть среду под объектом (поэтому любой компонент, который я использую для рисования объекта в форме, должен быть прозрачным).

Эта игра будет основана на тайлах... поэтому я буду генерировать 2D-массив какого-то компонента и помещать его в форму. Вопрос в том, какой компонент я должен использовать? Друг порекомендовал создать панели, поместить их в форму и использовать свойство фонового изображения, но есть ли лучший способ?

Я знаю, что это не идеальный способ разработки... это скорее прототип для себя. Позже я, возможно, перенесу его в Дао, если добьюсь чего-нибудь, но сейчас (т.е. в следующем году или около того) я бы хотел, чтобы он был предельно простым.


person the_e    schedule 18.08.2009    source источник


Ответы (1)


Плитки — это просто логические фрагменты, с помощью которых можно организовать ваш пользовательский интерфейс. Вам не обязательно иметь плитки в виде панелей, чтобы использовать идею «плитки». Переключение плиток может просто означать, что ваш персонаж достиг правого края плитки A, поэтому вы рисуете плитку B и размещаете персонажа на левом краю этой плитки. Таким образом, ваша структура памяти должна быть 2D-массивом логических объектов плитки, которые содержат информацию о том, что рисовать, но не обязательно Панели, хотя это вариант, я не рекомендую его.

Слои: вам не нужно беспокоиться о слоях. Все, что вам нужно сделать, это нарисовать в правильной последовательности: сначала окружение, затем объекты, а затем персонажи. .Net и, вероятно, все фреймворки рисуют задом наперед, а это означает, что объекты, нарисованные первыми, могут быть полностью или частично скрыты объектами, нарисованными позже. «Расслоение» происходит автоматически. Если вы просто рисуете свои объекты в пределах их собственных границ, вам не нужно беспокоиться о прозрачности. Например. символ размером 20x20 пикселей рисуется в границах 20x20 пикселей.

Конечно, все это предполагает необработанные вызовы e.Graphics.Draw* и e.Graphics.Fill* в обработчике событий Paint. Как и в любом программном обеспечении, существует 101 способ...

person Paul Sasik    schedule 18.08.2009