Embeding ein XNA-Spiel in einer Windows Form User Control

Ich habe ein einfaches XNA 4.0 Game geschrieben. Ich möchte eine Windows Form User Control, das wird machen das Spiel, und bieten die notwendige Interaktion feedback (Tastatur und Maus) zurück zu XNA.

Ich habe versucht, die folgenden:

In XNA:

  • Redirect XNA Game.GraphicsDevice zu einem RenderTarget2D.

  • Emittieren ein Ereignis, wenn ein Objekt mit KeyboardState und MouseState ausgefüllt werden, die von Windows Forms, am Anfang der Update () -

In WinForms:

  • Erfassen das Ereignis, durch das ausfüllen von KeyboardState und MouseState mit Daten, die von der üblichen Tastatur-und Maus-Ereignisse in Windows Forms.

  • Auf die OnPaint -, Anruf-Spiel.RunOnFrame()

  • Holen Sie sich die RenderTarget2D aus dem Spiel (als textur).

  • Schloss die textur der Daten, und versuchen Sie, es zu malen, pixel für pixel, die in meinem Benutzer-Steuerelement-Grafiken.

  • Andere Idee war, einfach anrufen Spiel.Run() (o eine neue Thread) und emittieren ein Ereignis im Spiel, das senden der RenderTarget2D.

Habe ich die folgenden Probleme:

  • Wenn ich rufe, Spiel.Run() ich habe keine Möglichkeit zu verbergen das Spiel-Fenster (erscheint schwarz, weil ich das umleiten der render)

  • Spiel.Run() muss aufgerufen werden, in einem anderen thread, denn es startet ein neues event-Schleife (es fordert die Anwendung der Methoden), und dann bin ich der Malerei in meiner Benutzer-Steuerelement von einem anderen thread, dass es erstellt wurde (schlecht, schlecht)

  • Sperren RenderTarget2D mit Farbe, Vector4 und sogar Rgba32 scheint nicht zu funktionieren für mich (es sagt "wrong structure size')

Irgendwelche Ideen?

Vielen Dank im Voraus.

  • Dumme Frage - warum würden Sie das tun wollen?
  • Ich denke, dieses tutorial & code-Beispiel deckt genau das, was Sie tun möchten: create.msdn.com/en-US/education/catalog/sample/...
  • Ich denke, das ist eine nicht so gut durchdachte Kommentar. Ich kann mir denken, ein Grund, möchten Sie vielleicht, um das einbetten eines xna-Spiels in einer winform: die Schaffung eines level-editor.
  • Ich habe tatsächlich in der Lage, viel besser beantworten Fragen nach dem Verständnis, das grundlegende Ziel. Wenn die OP ist in der Tat zu wollen, erstellen Sie eine level-editor, das wäre nützliche Informationen.
Schreibe einen Kommentar