Cara menemukan ukuran jendela di XNA

10

Saya hanya ingin tahu apakah ada cara untuk mengetahui ukuran jendela di XNA. Saya tidak ingin mengaturnya ke ukuran tertentu; Saya ingin tahu dimensi apa yang saat ini ditampilkan sebagai secara otomatis. Apakah ada cara untuk mengetahui informasi ini?

Saya menyadari bahwa saya mungkin harus menemukan informasi ini (atau mengaturnya sendiri secara manual) sebelum mengerjakan permainan, tetapi saya seorang pemula dan sekarang berharap untuk bekerja dalam dimensi yang telah saya investasikan. Terima kasih!

Nick Van Hoogenstyn
sumber

Jawaban:

15

Ini pilihanmu:

Untuk mendapatkan ukuran back-buffer gunakan:

GraphicsDevice.PresentationParameters.Bounds(untuk persegi panjang) atau BackBufferWidthdan BackBufferHeight.

Anda ingin ukuran back-buffer jika Anda melakukan hal-hal seperti mengatur viewports, mengambil screenshot, dll.

Untuk mendapatkan Viewport , gunakan:

GraphicsDevice.Viewport.Bounds(untuk persegi panjang) atau Widthdan Height.

Ukuran viewport adalah apa yang ingin Anda gunakan saat Anda benar-benar merender barang . Koordinat apa pun yang Anda lewati SpriteBatchberada dalam ruang klien sejajar piksel dalam hal viewport: (0,0) untuk piksel kiri atas ke (lebar-1, tinggi-1) untuk kanan bawah. Jika Anda melakukan hal-hal 3D, ruang proyeksi beralih dari (-1, -1) di kiri bawah viewport ke (1,1) di kanan atas.

Anda dapat menyesuaikan ukuran dan posisi viewport di layar (untuk melakukan efek seperti layar terpisah). Jadi, sementara itu diinisialisasi ke ukuran back-buffer, itu tidak selalu selalu sama.

Jika Anda melakukan hal-hal tata letak antarmuka, terutama jika Anda akan berjalan di Xbox 360, berhati-hatilah Viewport.TitleSafeArea. Ini memberi tahu Anda wilayah mana yang benar-benar terlihat di layar yang mungkin memotong beberapa perbatasan.

Jika, karena alasan tertentu, Anda benar-benar bekerja dengan jendela permainan itu sendiri, gunakan Game.GameWindow.ClientBounds.

Andrew Russell
sumber
Terima kasih banyak! Saya seharusnya menyebutkan bahwa itu adalah game 2D tapi itu baik dari Anda untuk memberikan kedua jawaban. Membaca di Viewports sekarang.
Nick Van Hoogenstyn
2

GraphicsDevice.Viewport.Bounds - ini mengembalikan Rectangle2D dan memiliki parameter Lebar dan Tinggi.

zacharmarz
sumber