Dalam mode XNA permainan berjendela ketika pengguna mengubah ukuran jendela, game berhenti memperbarui jendela dan bingkai terakhir yang ditarik ditarik dan didistorsi hingga pengguna melepaskan mouse dan ukurannya selesai.
Apakah ada cara agar permainan terus berjalan "normal", memperbarui bingkai dan menggambar ulang layar, selama acara pengubahan ukuran?
Saya menyadari bahwa menjaga agar render tetap berjalan saat mengubah ukuran mungkin tidak dapat atau tidak disarankan karena sumber daya yang dikelola perangkat keras terus-menerus dibuat dan dihancurkan, tetapi apakah ada cara untuk menghentikan peregangan yang jelek? Idealnya dengan membiarkan bingkai yang ada tidak dikunci di kiri atas, atau dengan layar hitam jika itu tidak memungkinkan.
Jawaban:
Setidaknya ada 3 pesan yang bisa Anda lacak.
WM_SIZE
- pengubahan ukuran jendela, mini / maksimalisasi, pengalihan layar penuh / berjendela. Anda harus membaca wParam untuk mengetahui apa yang sebenarnya terjadi dan untuk lParam untuk ukuran saat ini.WM_ENTERSIZEMOVE
- Mulai mengubah ukuran jendela dalam mode berjendelaWM_EXITSIZEMOVE
- Mengubah ukuran jendela akhir dalam mode berjendelaBiasanya Anda tidak ingin mengubah ukuran aplikasi setiap frame antara WM_ENTERSIZEMOVE dan WM_EXITSIZEMOVE karena terlalu sloow dan jelek. Tapi cobalah, ini jelas bukan peregangan, mungkin Anda akan menyukainya =)
sumber
System.Windows.Forms.Form.WndProc()
. Saat bekerja di XNA, Anda tidak memiliki akses langsung keForm
untuk menimpa metode itu. Meskipun dimungkinkan untuk dilakukan, ini bukan pekerjaan sepele dan harus menghindari desain XNA.