Лучшее направление для отображения игровой графики в приложении C # - PullRequest
3 голосов
/ 02 июня 2010

Я делаю маленькую игру как тестовый проект, ничего особенного. Я только начал и работаю над графикой, но я не уверен, что лучший способ вывести графику на экран.

Это будет похоже на старую Zelda, так что довольно просто использовать растровые изображения и тому подобное. Я начал думать, что могу просто рисовать в элемент управления Picture Box, используя Drawing.Graphics с помощью Handle от элемента управления, но это кажется громоздким. Я также не уверен, могу ли я использовать двойную буферизацию с этим методом.

Я посмотрел на XNA, но сейчас я хотел использовать простой метод для отображения всего.

Итак, мой вопрос. Используя текущие элементы управления и структуру C #, какой подход лучше всего подходит для отображения игровой графики (например, Picture Box, создание пользовательского элемента управления и т. Д.)

EDIT: Я добавлю, как я в настоящее время рисую на картинке. У меня есть объект Tile, который просто содержит пиксели для плитки ( List< List< Color>> texture; ), ничего более для простоты. Затем я рисую это в поле «Рис.», Перебирая пиксели и используя метод FillRectangle, используя кисть с текущим цветом пикселя и размером, указанным в переменной масштаба:

int scale = 5;
for (int i = 0; i < texture.Width;)
{
    for (int j = 0; j < texture.Height; ++j)
    {
        int x = i * scale;
        int y = j * scale;
        picBox.FillRectangle(new SolidBrush(currentPixelColor), new Rectangle(x, y, scale, scale));
    }
}

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

Ответы [ 3 ]

2 голосов
/ 02 июня 2010

Я бы порекомендовал вам еще раз взглянуть на XNA и попробовать несколько образцов. Сделать простые игры с XNA очень просто, если вы придерживаетесь 2D. Фреймворк отлично справляется с упаковкой всех деталей в простой для понимания поток, где вы, по сути, заполняете пробелы, так сказать.

Я сделал полную (но очень простую) игру для своего сына для Xbox всего за 8 часов без какого-либо предыдущего опыта.

Если вы переходите к 3D, вещи становятся более сложными, так как вы должны понимать различные модели видов, шейдеры и т. Д., Но для 2D действительно просто начать работу.

Еще одним преимуществом 2D является то, что необходимые инструменты легче получить. Я сделал всю графику с помощью Photoshop, звуки были в формате MP3 и голоса, которые я записал с помощью устройства записи Windows. Для 3D вам нужны сложные инструменты для построения и экспорта моделей и так далее.

0 голосов
/ 02 июня 2010

Сначала я настоятельно рекомендую использовать XNA или DirectX для разработки игр ...

Однако, если вы не хотите XNA или DirectX справки .... тогда вам придется использовать .Net GDI + малярные инструменты .....

Таким образом, вы можете рисовать точки, линии, круги, прямоугольники, дуги, растровые изображения, тексты и многое другое с помощью GDI + (что, конечно, доступно в C # и .Net ...)

Вы можете создать новый простой элемент управления (или использовать существующий, такой как окно изображения или сама форма!), Тогда вам придется переопределить его функцию OnPaint(PaintEventArgs e) ... Тогда вы будете использовать e.Graphics для рисования что хочешь ...

* *
тысячу двадцать-два * * 1 023 Пример:
Простое руководство по игре в тетрис на C #


EDIT:
Использование GDI + для рисования пиксель за пикселем - это падение производительности!


Лучше рисовать фигуры самостоятельно (круги и т. Д.)

0 голосов
/ 02 июня 2010

Я искренне верю, что XNA на сегодняшний день является одной из самых простых игровых платформ, которые я использовал. Кроме того, вы можете использовать WPF для рисования объектов на экране.

...