วิธีค้นหาขนาดหน้าต่างใน XNA


10

ฉันแค่อยากจะรู้ว่ามีวิธีหาขนาดของหน้าต่างใน XNA หรือไม่ ฉันไม่ต้องการตั้งเป็นขนาดเฉพาะ ฉันต้องการทราบว่ามิติข้อมูลที่จะแสดงเป็นอัตโนมัติในขณะนี้ มีวิธีหาข้อมูลนี้หรือไม่?

ฉันรู้ว่าฉันน่าจะได้พบข้อมูลนี้ (หรือตั้งค่าตัวเองด้วยตนเอง) ก่อนที่จะทำงานในเกม แต่ฉันเป็นสามเณรและตอนนี้ฉันหวังว่าจะทำงานในมิติที่ฉันได้ลงทุนไปแล้วขอบคุณ!

คำตอบ:


15

นี่คือตัวเลือกของคุณ:

ในการรับขนาดบัฟเฟอร์ด้านหลังใช้:

GraphicsDevice.PresentationParameters.Bounds(สำหรับสี่เหลี่ยม) หรือและBackBufferWidthBackBufferHeight

คุณต้องการขนาดบัฟเฟอร์ด้านหลังหากคุณกำลังทำสิ่งต่าง ๆ เช่นการตั้งค่าวิวพอร์ตถ่ายภาพหน้าจอ ฯลฯ

ในการรับวิวพอร์ตให้ใช้:

GraphicsDevice.Viewport.Bounds(สำหรับสี่เหลี่ยม) หรือและWidthHeight

ขนาดของวิวพอร์ตคือสิ่งที่คุณต้องการที่จะใช้เมื่อคุณจริงแสดงผลสิ่ง พิกัดใด ๆ ที่คุณส่งผ่านจะSpriteBatchอยู่ในพื้นที่ของไคลเอ็นต์ที่จัดพิกเซลเป็นพิกเซลในแง่ของวิวพอร์ต: (0,0) สำหรับพิกเซลซ้ายบนถึง (กว้าง -1, สูง -1) สำหรับด้านล่างขวา หากคุณกำลังทำสิ่ง 3 มิติพื้นที่ฉายจะเริ่มจาก (-1, -1) ที่มุมล่างซ้ายของวิวพอร์ตถึง (1,1) ที่มุมขวาบน

คุณสามารถปรับขนาดและตำแหน่งของวิวพอร์ตบนหน้าจอ (สำหรับการทำเอฟเฟกต์เช่นหน้าจอแยก) ดังนั้นในขณะที่มันถูกกำหนดค่าเริ่มต้นกับขนาดของบัฟเฟอร์ด้านหลังมันไม่จำเป็นต้องเหมือนกันเสมอไป

หากคุณกำลังทำสิ่งที่รูปแบบอินเตอร์เฟซโดยเฉพาะอย่างยิ่งถ้าคุณจะทำงานบน Xbox 360 Viewport.TitleSafeAreaจะตระหนักถึง สิ่งนี้จะบอกคุณว่าภูมิภาคใดที่สามารถมองเห็นได้บนหน้าจอที่อาจตัดขอบบางส่วนออก

Game.GameWindow.ClientBoundsถ้าด้วยเหตุผลบางอย่างที่คุณจริงทำงานกับหน้าต่างเกมที่ตัวเองใช้


ขอบคุณมาก! ฉันควรระบุว่ามันเป็นเกม 2 มิติ แต่นั่นก็ดีสำหรับคุณที่จะให้คำตอบทั้งคู่ อ่านบนวิวพอร์ตตอนนี้
Nick Van Hoogenstyn

2

GraphicsDevice.Viewport.Bounds - นี่จะคืนค่า Rectangle2D และมีพารามิเตอร์ความกว้างและความสูง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.