C# 使用winforms的单游戏
我目前正在尝试使用C#中的monogame和winforms创建地图编辑器。我在Visual Studio 2015的Windows 7机器上工作。我创建了一个winforms项目,并添加了以下引用:MonoGame.Framework、OpenTk和OpenTk.GLControl。然后,我从中包括了以下文件:GraphicsDeviceControl.cs、GraphicsDeviceService.cs和ServiceContainer.cs。完成后,我将XNA示例移植到MonoGame。到目前为止,一切正常 然后,我创建了这个测试类,以确保它能够正常工作:C# 使用winforms的单游戏,c#,winforms,monogame,opentk,C#,Winforms,Monogame,Opentk,我目前正在尝试使用C#中的monogame和winforms创建地图编辑器。我在Visual Studio 2015的Windows 7机器上工作。我创建了一个winforms项目,并添加了以下引用:MonoGame.Framework、OpenTk和OpenTk.GLControl。然后,我从中包括了以下文件:GraphicsDeviceControl.cs、GraphicsDeviceService.cs和ServiceContainer.cs。完成后,我将XNA示例移植到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();
}
}
}
但我还是有同样的黑色窗户。
我也在gitub repo中的MGWinFormsControl项目中尝试了移植的xna示例:结果是“GraphicsDeviceService.parameters”警告消失了,但除了一个黑色窗口之外,我仍然无法获得任何东西
有人知道我该怎么做才能解决这个问题吗
提前谢谢 Jaquadro版本仅适用于OpenGL。它基于较早版本的MonoGame,其中GL+winforms是可能的。首席开发人员目前有意禁用此功能,直到另行通知,但DX与之兼容。我已经发布了两个实现这一点的库 这是基于直接移植到monogame的Xna教程。 此版本基于对上述版本的修改。 在MicrosoftXNA框架控件中(基于Xna表单控件示例),必须有3个类。 -图形控制设备 -图形设备服务 -服务容器 使用此选项时,您将创建一个新类,继承GraphicsDevicontrol(它将生成一个UserControl)并修改draw函数以执行任务。准备好后,将其放到窗体上,这需要每个窗口都有一个全新的控件(即使它们只是略有不同),并调用代码中的某个地方进行绘制。这可以通过将绘图代码添加到Application.Idle或在主循环中手动调用绘图来完成 我的git帖子中当前的编译版以.NET4.0为目标,使用Monogame3.4 在使用我修改过的库时,MonoGame框架控件只需在窗体上放置一个GraphicsDeviceControl。然后从VisualDesigner中添加Draw事件,并在其中添加代码。clearcolor在调用draw之前自动完成,可以通过代码或可视化设计器进行设置,因为它是可以从“属性”窗口修改的属性。为了绘制这张图,您所要做的就是从可视化设计器中将AutoDraw设置为true,或者将其设置为false,然后在循环内部手动调用该图 我的git帖子中当前的编译版以.NET4.5为目标,使用Monogame3.5 通过搜索ArchaicSoft或git中列出的名称,也可以在Nuget上找到这两个名称- 单游戏。框架。控制 Microsoft.Xna.Framework.Control
就我个人而言,为了便于使用和方便,我建议使用我修改过的Windows样式窗体控件,而不是用户控件体验,但这是您的选择。谢谢!经过大量的研究和麻烦之后,它终于开始工作了:数据链接被破坏,存储库似乎被破坏gone@MGZero是的,我道歉:(我停止使用ArchaicOokami这个名字,或者在MonoGame上做任何事情,因为主要的问题被故意忽略了,因为他们没有足够重视这些问题,或者他们会修复一些问题,然后立即同时更改一堆东西,所以所有的兼容性都被破坏了,同时又出现了新的问题……所以我只是删除了它,因为它在水中是死api。@DamienGibson lol现在不用担心。Monogame开始给我带来很多问题,我干脆停止使用它。@MGZero你用什么来代替它?
GraphicsDevice.Clear(Color.Blue);