gpt4 book ai didi

xna - 如何在 MonoGame 中获取底层 Window?

转载 作者:行者123 更新时间:2023-12-04 17:55:54 25 4
gpt4 key购买 nike

我正在转换 Gleed2D 从 XNA 到 MonoGame。

Gleed2D 是一个 Windows 窗体应用程序 实例化一个 XnaGame . window创建者 Game然后隐藏,DeviceWindowHandle设置为 Canvas在主窗体上。

我知道这有点难听;代码不言自明:here it is in full .
相关位在构造函数中:

            _drawSurface = mainForm.GetHandleToCanvas();
_graphics = new GraphicsDeviceManager( this )
{
PreferredBackBufferWidth = 800,
PreferredBackBufferHeight = 600
} ;

_graphics.PreparingDeviceSettings += graphics_PreparingDeviceSettings;

_winform = (Form)Form.FromHandle(Window.Handle);

_winform.VisibleChanged += game1VisibleChanged;
_winform.Size = new Size(10, 10);

Mouse.WindowHandle = _drawSurface;

Size pictureBoxSize = _mainForm.CanvasSize ;

ResizeBackBuffer( pictureBoxSize.Width, pictureBoxSize.Height ) ;

... some other stuff....


void graphics_PreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs e)
{
e.GraphicsDeviceInformation.PresentationParameters.DeviceWindowHandle = _drawSurface;
}

我的问题是:在 XNA 中, Window.Handle可以转换为 Form .在 MonoGame 中,它被实现为 OpenTK.GameWindow . 我怎样才能到达实际窗口以便我可以隐藏和/或调整它的大小? .另一个问题是: 如何创建 MonoGame Game并告诉它渲染表面是另一个控件的渲染表面?

最佳答案

在创建原生窗口之前,OpenTK 的 GameWindow 走了很长一段路。在此页面上,您可以看到 native 实现:https://github.com/mono/opentk/blob/master/Source/OpenTK/Platform/Windows/WinGLNative.cs

我的解决方案是破解 OpenTK 的源代码或在 OpenTK-Forums 中提问。

关于xna - 如何在 MonoGame 中获取底层 Window?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com