Как найти размер окна в XNA

10

Я просто хотел узнать, есть ли способ узнать размер окна в XNA. Я не хочу устанавливать определенный размер; Я хотел бы знать, какие размеры он в настоящее время отображает как автоматически. Есть ли способ узнать эту информацию?

Я понимаю, что мне, вероятно, следовало бы найти эту информацию (или установить ее самостоятельно) перед началом работы над игрой, но я новичок и теперь надеюсь работать в рамках, в которые я уже вложил деньги. Спасибо!

Ник Ван Хугенстин
источник

Ответы:

15

Вот ваши варианты:

Чтобы получить размер заднего буфера, используйте:

GraphicsDevice.PresentationParameters.Bounds(для прямоугольника) или BackBufferWidthи BackBufferHeight.

Вы хотите размер заднего буфера, если вы делаете такие вещи, как настройка области просмотра, снимки экрана и т. Д.

Чтобы получить видовой экран , используйте:

GraphicsDevice.Viewport.Bounds(для прямоугольника) или Widthи Height.

Размер области просмотра - это то, что вы хотите использовать при рендеринге . Любые передаваемые вами координаты SpriteBatchнаходятся в выровненном по пикселям клиентском пространстве с точки зрения области просмотра: (0,0) для верхнего левого пикселя и (ширина-1, высота-1) для нижнего правого. Если вы занимаетесь трехмерными вещами, пространство проекции изменяется от (-1, -1) в нижнем левом углу окна просмотра до (1,1) в верхнем правом углу.

Вы можете настроить размер и положение области просмотра на экране (для создания таких эффектов, как разделение экрана). Таким образом, хотя он инициализируется размером заднего буфера, он не обязательно всегда один и тот же.

Если вы занимаетесь разметкой интерфейса, особенно если вы будете работать на Xbox 360, будьте внимательны Viewport.TitleSafeArea. Это говорит вам, какой регион определенно виден на экранах, которые могут отрезать некоторые границы.

Если по какой-то причине вы работаете с самим игровым окном, используйте Game.GameWindow.ClientBounds.

Эндрю Рассел
источник
Большое спасибо! Я должен был указать, что это была 2D-игра, но это было мило с вашей стороны дать оба ответа. Чтение на Viewports сейчас.
Ник Ван Хугенстин
2

GraphicsDevice.Viewport.Bounds - возвращает Rectangle2D и имеет параметры Width и Height.

zacharmarz
источник