Monogame.forms es la forma más fácil de integrar una ventana de renderizado de monogame en su proyecto de formularios de Windows. Debería hacerle la vida mucho más fácil, cuando desee crear su propio entorno de editor.
Nota
Consejo
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; . Si desea desactivar la escala de toda su aplicación, debe agregar un archivo manifiesto . Importante
dotnet add package MonoGame.Forms.DX o use el administrador de paquetesdotnet new install MonoGame.Forms.Templatesdotnet new mgf -n MyMonoGameFormsProjectdotnet new mgfn -n MyMonoGameFormsProjectdotnet new mgc -na MyMonoGameControldotnet new mgic -na MyInvalidationControlEn Monogame podrías dibujar algo a la pantalla con el Spritebatch . En monogame.forms , hará lo mismo, pero debe usar el editorService para esto.
En las clases de monogame.forms.control Este servicio se llama editor . Entonces, para atraer algo al Spritebatch , debe hacer esto:
Editor . spriteBatch . DrawString ();Echemos un vistazo a la clase final de 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 ();
}
}
}Resultado:
Es más o menos en el monogame.framework!
Eche un vistazo a monogame.forms.samples-project, que es parte de este repositorio, para obtener más información sobre cómo funciona monogame.forms.
Esta clase de control específica no necesita anular el método Update () , porque se actualiza manualmente (¡por usted!).
Simplemente necesita llamar a Invalidate () en un Control de invalidación personalizado para cada cambio que desee ver en él. Después de llamar a esto, su control ya no consume la potencia de la CPU. ¡Esto es genial al crear controles de vista previa para texturas y cosas similares!
Aquí hay algunas fotos de muestra de la rama Blazor: