Monogame.forms é a maneira mais fácil de integrar uma janela de renderização de monogame no projeto do Windows Forms. Deve facilitar sua vida, quando você deseja criar seu próprio ambiente de editor.
Observação
Dica
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; . Se você deseja desativar a escala de todo o aplicativo, precisará adicionar um arquivo de manifesto . Importante
dotnet add package MonoGame.Forms.DX OU Use o gerenciador de pacotesdotnet new install MonoGame.Forms.Templatesdotnet new mgf -n MyMonoGameFormsProjectdotnet new mgfn -n MyMonoGameFormsProjectdotnet new mgc -na MyMonoGameControldotnet new mgic -na MyInvalidationControlNo Monogame, você pode desenhar algo para a tela com o SpriteBatch . No Monogame.Forms , você fará o mesmo, mas precisará usar o EditorService para isso.
Nas classes Monogame.Forms.Control, este serviço é chamado de editor . Portanto, para atrair algo para o SpriteBatch , você precisa fazer isso:
Editor . spriteBatch . DrawString ();Vamos dar uma olhada na aula final do 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:
É muito parecido com o monogame.Framework!
Dê uma olhada no Monogame.forms.samples-Project, que faz parte deste repositório, para saber mais sobre como o monogame.forms funciona.
Esta classe de controle específica não precisa substituir o método update () , porque é atualizado manualmente (por você!).
Você simplesmente precisa ligar para o invalidato () em um invalidação personalizada para cada alteração que deseja ver nele. Depois de chamar isso, seu controle não consome mais poder da CPU. Isso é ótimo ao criar controles de visualização para texturas e coisas semelhantes!
Aqui estão algumas fotos de amostra do ramo da Blazor: