Я делаю небольшую игру в качестве тестового проекта, ничего серьезного. Я только начал и работаю над графикой, но я не уверен, как лучше всего рисовать графику на экране.
Это будет что-то вроде старой Zelda, очень простое использование растровых изображений и тому подобного. Я начал думать, что могу просто рисовать в элементе управления Picture Box, используя Drawing.Graphics с ручкой из элемента управления, но это кажется громоздким. Я также не уверен, могу ли я использовать двойную буферизацию с этим методом.
Я посмотрел на XNA, но сейчас я хотел использовать простой метод для отображения всего.
Итак, мой вопрос. Каков наилучший подход к отображению игровой графики с использованием текущих элементов управления и инфраструктуры C# для окон (например, Picture Box, создание пользовательского элемента управления и т. д.)
РЕДАКТИРОВАТЬ: я добавлю, как я сейчас рисую, в окно изображения. У меня есть объект 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));
}
}
Ага, довольно громоздко. Любые предложения или комментарии приветствуются.
Draw()достаточно, чтобы нарисовать объект на экране. Кроме того, у него есть несколько служебных методов, расширяемость и т. д. для создания игр. - person Julien Lebosquain   schedule 02.06.2010DrawImageдля объектаGraphicsс егоInterpolationMode, установленным вHighQualityBicubic(или один из других режимов высокого качества), что значительно замедляет работу. Наиболее эффективным подходом было бы начать с изображения любого желаемого размера и нарисовать его без какого-либо масштабирования. Или нарисуйте меньшее изображение, масштабированное один раз, до большего изображения, а затем нарисуйте большее изображение без масштабирования. - person MusiGenesis   schedule 03.06.2010