Monogame.forms est le moyen le plus simple d'intégrer une fenêtre de rendu Monogame dans votre projet Windows Forms. Cela devrait vous faciliter la vie lorsque vous souhaitez créer votre propre environnement d'éditeur.
Note
Conseil
AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; . Si vous souhaitez désactiver l'échelle de l'ensemble de votre application, vous devez ajouter un fichier manifeste . Important
dotnet add package MonoGame.Forms.DX ou utiliser le gestionnaire de packagesdotnet new install MonoGame.Forms.Templatesdotnet new mgf -n MyMonoGameFormsProjectdotnet new mgfn -n MyMonoGameFormsProjectdotnet new mgc -na MyMonoGameControldotnet new mgic -na MyInvalidationControlDans Monogame, vous pouvez dessiner à l'écran avec le Spritebatch . Dans Monogame.Forms , vous ferez de même, mais vous devez utiliser l'éditeur pour cela.
Dans les classes Monogame.Forms.Control, ce service s'appelle Editor . Donc, afin de dessiner quelque chose sur le spritebatch, vous devez faire ceci:
Editor . spriteBatch . DrawString ();Jetons un coup d'œil à la classe finale du dessin :
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 ();
}
}
}Résultat:
C'est à peu près comme dans le monogame.framework!
Jetez un œil à la monogame.forms.sample-project, qui fait partie de ce référentiel, pour en savoir plus sur le fonctionnement de monogame.forms.
Cette classe de contrôle spécifique n'a pas besoin pour remplacer la méthode Update () , car elle est mise à jour manuellement (par vous!).
Il vous suffit d'appeler Invalidate () sur une InvalidationControl personnalisée pour chaque modification que vous souhaitez voir dessus. Après avoir appelé cela, votre contrôle ne consomme plus la puissance du processeur. C'est génial lors de la création de contrôles de prévisualisation pour les textures et des choses similaires!
Voici quelques exemples de photos de la branche Blazor: