将单游戏与Winform一起使用

TS1997

我目前正在尝试在C#中使用monogame和winforms创建一个mapeditor。我正在Windows 7机器上的Visual Studio 2015中工作。我创建了一个winforms项目,然后添加以下参考:MonoGame.Framework,OpenTk和OpenTK.GLControl。然后,我包括了XNA Winforms示例中的以下文件: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();
        }
    }
}

然后,我构建了项目,以便此类在表单设计器工具箱中显示。这也很好,所以我将类拖放到设计器中的表单上。这也显示为正常。然后,我再次构建了该项目,并希望显示我的纹理,但是,我只得到了一个与设计器中添加的类一样大的黑色窗口,请参见此图:prnt.sc/b33my9(无法创建第三个链接,因为我没有足够的代表)我还可以提到Visual Studio 2015表示从未使用过GraphicsDeviceService.cs中的“ GraphicsDeviceService.parameters”字段。我不知道这是否是我的问题的一部分。我还尝试用以下行替换Draw函数中的代码:

GraphicsDevice.Clear(Color.Blue);

但我仍然有同样的黑窗。我还尝试了在该gitub存储库中的MGWinFormsControls项目中移植的xna示例:github.com/jaquadro/MonoGame-WinFormsControls,结果是“ GraphicsDeviceService.parameters”警告消失了,但我仍然无法得到任何东西除了黑色的窗户。

有谁知道我该怎么做才能解决此问题?

提前致谢!

达米安·吉布森(Damien Gibson)

Jaquadro版本仅适用于OpenGL。它基于MonoGame的较早版本,在该版本中可以使用GL + winforms。首席开发人员当前有意禁用此功能,直到另行通知,但DX与之兼容。我已经发布了2个实现此目的的库。

这是基于直接移植到monogame的Xna教程。https://github.com/ArchaicOokami/MonoGame.Framework.Control

这是基于对上述版本的修改。https://github.com/ArchaicOokami/Microsoft.Xna.Framework.Control

在Microsoft Xna Framework Control(基于xna表单控件示例)中,您必须具有3个类。-GraphicsControlDevice-GraphicsDeviceService-服务容器

使用此方法时,您将创建一个新类,继承GraphicsDeviceControl(这又将制作一个UserControl)并修改draw函数以执行您的任务。准备好并将其扔到窗体上后,它需要每个窗口一个全新的控件(即使它们只是稍有不同),并需要在代码中调用某个地方以进行绘制。这可以通过将绘图代码添加到Application.Idle或通过在主循环中手动调用绘图来完成。

我的git post中的当前编译版本的目标是.net 4.0,并使用MonoGame 3.4。

使用修改后的库时,您需要做的就是将GraphicsDeviceControl放到窗体上。然后从视觉设计器中添加Draw事件,并在其中添加代码。clearcolor是在调用绘图之前自动完成的,并且可以通过代码或可视设计器进行设置,因为它是一个属性,您可以在“属性”窗口中对其进行修改。为了进行此绘制,您所需要做的就是从视觉设计器中将AutoDraw设置为true或将其设置为false并在循环内部手动调用该绘制。

我的git post中的当前编译版本的目标是.net 4.5,并使用MonoGame 3.5。

这两个都可以在Nuget上找到,方法是搜索ArchaicSoft或git aka中列出的名称-MonoGame.Framework.Control Microsoft.Xna.Framework.Control

为了方便使用和方便,我个人建议为Windows样式表单控件而不是用户控件体验进行修改,但这是您的选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将单游戏与Winform一起使用

来自分类Dev

将XNA(Windows)游戏库与XNA(Windows)游戏项目一起使用

来自分类Dev

如何将@UniqueConstraint与单表继承(JPA)一起使用?

来自分类Dev

将IdentityServer3与单页应用程序一起使用(UseIdentityServerBearerTokenAuthentication)

来自分类Dev

如何将git“ --unshallow”与“-单分支”克隆一起使用?

来自分类Dev

将单态函数与多态Haxl库一起使用?

来自分类Dev

当将Thread.Sleep与pictureBox一起使用时,Winform冻结

来自分类Dev

将IPEGA蓝牙游戏手柄与Retropie一起使用

来自分类Dev

单例和线程不能一起使用

来自分类Dev

将可堆叠特征与单例对象一起使用

来自分类Dev

DirectX 9的游戏无法与DirectX 11一起使用

来自分类Dev

将单例与泛型和complementHandler一起使用时发生编译错误

来自分类Dev

如何将单消息转换与 Kafka Connect JDBC 源连接器和多个表一起使用?

来自分类Dev

将“ -Filter”与变量一起使用

来自分类Dev

将PowerMock与黄瓜一起使用

来自分类Dev

将XhtmlTextWriter与XmlTextReader一起使用

来自分类Dev

将Scrapyd与参数一起使用

来自分类Dev

将AngularJS与Liferay一起使用

来自分类Dev

将Magicline与Flexslider一起使用

来自分类Dev

将CMAttitude与CMCalibratedMagneticField一起使用

来自分类Dev

将findall与arg一起使用

来自分类Dev

将StaticPagedList与PagedListRenderOptions一起使用

来自分类Dev

将Redis与SignalR一起使用

来自分类Dev

将阵列与渗透一起使用

来自分类Dev

将ctypes与typedef一起使用

来自分类Dev

将regex与replaceAll一起使用

来自分类Dev

将SUMPRODUCT与TRANSPOSE一起使用

来自分类Dev

将MaybeT与`join`一起使用

来自分类Dev

将ShardedJedis与RedisTemplate一起使用

Related 相关文章

热门标签

归档