2016-05-12 4 views
2

現在、C#でmonogameとwinformsを使ってmapeditorを作成しようとしています。私はWindows 7マシンでVisual Studio 2015で作業しています。 winformsプロジェクトを作成し、MonoGame.Framework、OpenTk、OpenTK.GLControlという参照を追加しました。次に、GraphicsDeviceControl.cs、GraphicsDeviceService.cs、およびServiceContainer.csのXNA Winforms Sampleから、次のファイルを含めました。これが完了したら、this tutorialに続いて、XNAサンプルをMonoGameに移植しました。これまでのすべてが機能します。winogsでmonogameを使用する

その後、私はそれが動作することを確認するには、このテスト・クラスを作成しました:

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Content; 
using Microsoft.Xna.Framework.Graphics; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace TileMapEditor 
{ 
    class Test : GraphicsDeviceControl 
    { 
     ContentManager content; 
     SpriteBatch spriteBatch; 
     Texture2D t; 

     protected override void Initialize() 
     { 
      content = new ContentManager(Services, "Content"); 
      spriteBatch = new SpriteBatch(GraphicsDevice); 

      t = content.Load<Texture2D>("Gameplay/Player"); 
     } 

     protected override void Draw() 
     { 
      spriteBatch.Begin(); 
      spriteBatch.Draw(t, new Rectangle(10, 10, t.Width, t.Height), Color.White); 
      spriteBatch.End(); 
     } 
    } 
} 

それから私は、そう、このクラスは、フォームデザイナツールボックスに表示されますプロジェクトを構築しました。これもうまくいきましたので、私はクラスをデザイナーのフォームにドラージすることで作業を進めました。これも正常に表示されました。それから、もう一度プロジェクトを構築して、テクスチャが表示されることを期待しましたが、デザイナで追加したクラスの黒いウィンドウしか表示されませんでした。この画像を参照してください:prnt.sc/b33my9十分な担当者がいない) Visual Studio 2015では、GraphicsDeviceService.csのフィールド 'GraphicsDeviceService.parameters'は決して使用されないと言及することもできます。それが私の問題の一部であるかどうかわかりません。 私もこのラインで描画機能で自分のコードを交換しようとした:

GraphicsDevice.Clear(Color.Blue); 

が、私はまだ同じ黒いウィンドウを得ました。 また、このgitubリポジトリにあるMGWinFormsControlsプロジェクトで移植されたxnaサンプルを試しました。その結果、 'GraphicsDeviceService.parameters'警告は消えていますが、黒いウィンドウ以外は何も取得できません。

これを修正するために何をすべきか知っている人はいますか?

ありがとうございます!

答えて

1

Jaquadro版はOpenGLのみです。これは、GL + winformsが可能だったMonoGameの旧版に基づいています。ヘッド開発者は、現在のところ、この通知を意図的に無効にしていますが、DXはそれに対応しています。私はこれを達成する2つの図書館を掲示しました。

これは、Xnaチュートリアルに直接基づいてモノゲームを行ったものです。 https://github.com/ArchaicOokami/MonoGame.Framework.Control

これは、上記のバージョンの変更に基づいています。 https://github.com/ArchaicOokami/Microsoft.Xna.Framework.Control

Microsoft Xna Frameworkコントロール - xnaフォームコントロールの例 - 3つのクラスが必要です。 - GraphicsControlDevice - GraphicsDeviceService - サービスコンテナ

これを使用するときは、新しいクラスを作成します(これは、ユーザーコントロールをしている)GraphicsDeviceControlを継承し、あなたのタスクを実行するためにドロー機能を変更します。これを準備してフォームに投げた後は、ウィンドウごとに全く新しいコントロールが必要です(たとえわずかに違いがあったとしても)。また、描画するコードのどこかを呼び出します。これは、描画コードをApplication.Idleに追加するか、またはメインループ内で手動で描画を呼び出すことによって実行できます。

私のgit投稿の現在のコンパイル版は、.net 4.0をターゲットにしており、MonoGame 3.4を使用しています。

私の変更されたライブラリを使用している間、MonoGame Framework ControlはあなたのフォームにGraphicsDeviceControlを置くだけです。その後、ビジュアルデザイナーからDrawイベントを追加し、そこにコードを追加します。クリアカラーは描画が呼び出される前に自動的に行われ、プロパティウィンドウから変更できるプロパティであるため、コードまたはビジュアルデザイナーを使用して設定できます。これを行うには、ビジュアルデザイナーからAutoDrawをtrueに設定するか、falseに設定して手動でループ内の描画を呼び出すだけです。

gitの現在のコンパイル版は、.net 4.5をターゲットにしており、MonoGame 3.5を使用しています。

これらのどちらもArchaicSoftか、彼らは別名のgitのようにリストされている名前を検索してNuget上で見つけることができます - MonoGame.Framework.Control Microsoft.Xna.Framework.Controlを容易にするために個人的に

を+便利、私はusercontrolの経験の代わりにWindowsスタイルのフォームコントロールのために変更したものをお勧めしますが、それはあなたの選択です。

+0

ありがとうございました!それはついに多くの研究とトラブルの後で働いています:D – TS1997

+0

リンクが壊れている、リポジトリがなくなっているようです – MGZero

関連する問題