Monogame.Forms เป็นวิธีที่ง่ายที่สุดในการรวมหน้าต่างการเรนเดอร์คู่สมรสเข้ากับโครงการ Windows Forms ของคุณ มันควรทำให้ชีวิตของคุณง่ายขึ้นมากเมื่อคุณต้องการสร้างสภาพแวดล้อมของตัวแก้ไขของคุณเอง
บันทึก
เคล็ดลับ
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - หากคุณต้องการปิดการปรับขนาดแอปพลิเคชันทั้งหมดของคุณคุณต้องเพิ่ม ไฟล์ Manifest สำคัญ
dotnet add package MonoGame.Forms.DX หรือใช้ Package Managerdotnet new install MonoGame.Forms.Templatesdotnet new mgf -n MyMonoGameFormsProjectdotnet new mgfn -n MyMonoGameFormsProjectdotnet new mgc -na MyMonoGameControldotnet new mgic -na MyInvalidationControlในโมฆะคุณสามารถวาดบางครั้งบนหน้าจอด้วย SpriteBatch ใน monogame.forms คุณจะทำเช่นเดียวกัน แต่คุณต้องใช้ Editorservice สำหรับสิ่งนี้
ในคลาส monogame.forms.control บริการนี้เรียกว่า Editor ดังนั้นเพื่อที่จะวาดบางสิ่งบางอย่างไปยัง SpriteBatch คุณต้องทำสิ่งนี้:
Editor . spriteBatch . DrawString ();มาดูคลาส Drawtest สุดท้าย:
using Microsoft . Xna . Framework ;
using MonoGame . Forms . Controls ;
namespace nugetTest
{
public class DrawTest : MonoGameControl
{
string WelcomeMessage = "Hello MonoGame.Forms!" ;
protected override void Initialize ()
{
}
protected override void Update ( GameTime gameTime )
{
}
protected override void Draw ()
{
Editor . spriteBatch . Begin ();
Editor . spriteBatch . DrawString ( Editor . Font , WelcomeMessage , new Vector2 (
( Editor . graphics . Viewport . Width / 2 ) - ( Editor . Font . MeasureString ( WelcomeMessage ). X / 2 ),
( Editor . graphics . Viewport . Height / 2 ) - ( Editor . FontHeight / 2 )),
Color . White );
Editor . spriteBatch . End ();
}
}
}ผลลัพธ์:
มันค่อนข้างเหมือนใน monogame.framework!
ลองดูที่ monogame.forms.samples-project ซึ่งเป็นส่วนหนึ่งของ repo นี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของ monogame.forms
คลาสควบคุมเฉพาะนี้ไม่จำเป็นต้องแทนที่วิธี การอัปเดต () เนื่องจากได้รับการอัปเดตด้วยตนเอง (โดยคุณ!)
คุณเพียงแค่ต้องโทรหา unvalidate () บน InvalidationControl ที่กำหนดเองสำหรับการเปลี่ยนแปลงทุกครั้งที่คุณต้องการดู หลังจากเรียกสิ่งนี้การควบคุมของคุณจะไม่ใช้พลังงาน CPU อีกต่อไป นี่เป็นสิ่งที่ยอดเยี่ยมเมื่อสร้างการควบคุมตัวอย่างสำหรับพื้นผิวและสิ่งที่คล้ายกัน!
นี่คือภาพตัวอย่างบางส่วนจาก Blazor Branch: