问题标签 [sdl.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1340 浏览

forms - SDL.NET (VB/C#):启动对象和应用程序类型应该是什么?

由于 VB.NET 的各种缺点(糟糕的音频支持、执行过程中没有读取事件、键盘输入非常弱等),我最终无法进一步使用我的程序。所以我尝试了 SDL.NET 6.1。
尽管它的文档很糟糕,但我能够修复我的代码以使用它,我喜欢它!

但是有一个问题。我不知道如何为它设置我的应用程序设置。启动对象绝对应该是一个类(示例总是在类中,而不是模块中),但启动类必须是一个表单!这很糟糕,因为 SDL 通过 SetVideoMode 创建自己的窗口;你不需要表格。因此,当表单构造函数 New() 完成时,会创建一个无用的表单,并且您有两个窗口。

我尝试在 New() 中调用游戏引擎循环,以便游戏在 New() 没有完成的情况下启动。游戏运行正常,这样就解决了“第二个窗口”的问题……但是无法关闭! X 按钮什么都不做,对 Events.QuitApplication 或 Me.Close 的调用被公然忽略,等等。

我难住了。看来我需要设置一个非表单类作为启动对象,但它不会让我。

哦,对了,好像有两个东西叫做“SDL NET”。为了澄清,我正在使用这个,它存在于SdlDotNet命名空间中。

哦,我忘了提,我还注意到很多例子都有一行写着“[STAThread]”。这很重要吗?

编辑:我已经收到并接受了我的问题的答案,但我想告诉其他人退出/关闭应用程序的问题是什么,即使这不是我的问题:
虽然 SDL.NET 允许您接收输入和运行其他事件而不必停止运行逻辑,应用程序在逻辑运行时仍然无法退出。所以我发现告诉你的 SDL.NET 应用程序在运行逻辑中退出的最佳方法是使用以下两行:

将这些放置在 SdlDotNet.Core.Events.Quit 事件的处理程序中,以及您希望程序退出的任何其他位置。

0 投票
2 回答
1273 浏览

c# - 移动 SDL 视频表面

有谁知道如何以编程方式在屏幕上移动我的SDL.net视频表面?

我找不到任何属性SurfaceVideo哪些属性可以完成这项工作,并且FromHandle正在返回 Null。

窗口正在初始化,从屏幕底部掉落。 替代文字

有任何想法吗?

更新:

我已经看过这段代码,但无法计算出等效的 C# 实现。任何人都可以帮忙吗?

如果做不到这一点,在我的 c# 项目中包含一些 c++ 需要做多少工作?

谢谢。

0 投票
1 回答
202 浏览

sdl.net - SDL.NET runtime without installation?

With plain old sdl in C i would copy the dlls i need into the exe directory and was able to run without install.

Now i am using sdl.net. I tried doing that but had no luck. Not even a clue to what dlls are missing as i did in the old C way. How can i have users run my sdl app without installation?

0 投票
2 回答
477 浏览

installation - SDL.Net 应用程序在没有 SDL.NET SDK 的情况下无法工作

我有一个用 C# 制作的游戏,它可以在 Windows XP 下按预期安装和运行。但是,当我将它安装在 Windows 7 机器上时,它要么根本不起作用(没有任何错误消息),要么给出一般错误消息。为了能够在 Windows 7 计算机上使用 SDL.Net,我需要做些什么特别的事情吗?

更新:我刚刚被告知它甚至不适用于 XP。我试用过的两台 XP 机器都安装了 SDL.NET(当我使用它进行测试时,我不知道其中一台已经安装了它)。如果 SDL.NET SDK 没有安装在计算机上,那么我的程序就无法运行。有没有人了解我的 SDL 程序究竟需要什么才能使其正常运行?现在我拥有所有基本的 SDL_*.dll 和 SdlDotNet.dll 和 Tao.Sdl.dll。更需要?还是我必须与我的程序一起安装某种 SDL 运行时才能使用它?我真的被这个困住了。

0 投票
1 回答
213 浏览

c# - SDL 中的颜色表现得很奇怪

我正在 SDL.NET 中制作一个程序,我需要在其中绘制一个填充的多边形。我认为重复使用多边形表面而不是每次需要绘制时都重新制作它可能会很好,所以我像这样制作表面,然后将其保存到字典中:

polyPolygon我事先创建的对象。

你可能会认为当表面被 blitted 到屏幕时,这会绘制一个浅绿色的多边形;它没有。生成的多边形是青色的!我通过实验发现,如果我用 制作颜色Color.FromArgb,R 通道变为红色,G 通道变为青色,B 通道变为黑色。

但是,如果我将 Draw 调用中的第二个布尔值设置为 false(禁用填充),我会得到一个浅绿色的轮廓。显然,填充操作导致颜色混乱。

有任何想法吗?

0 投票
1 回答
240 浏览

sdl - SDL.NET SDL_Flip() 等效

SDL 有一个用于交换屏幕缓冲区的SDL_Flip() 函数。

SDL.NET 中的等价物是什么?没有 Screen.Flip() 方法。

0 投票
1 回答
259 浏览

sdl.net - SurfaceControl 上未引发 sdl.net 键盘事件

我正在使用 SdlDotNet 6.1,我喜欢它 :)

我的 SurfaceControl WinForm 控件(pictureBox),我没有收到按键向上和向下事件所有其他事件(MouseDown、MouseMotion、Tick)似乎只有在调用 Events.Run()(锁定线程......)后才起作用

WinForm 事件“PreviewKeyDown”也没有引发。

我发现 SurfaceControl 需要焦点来引发这些事件。我在 MouseMove 事件上使用 mySurfaceControl.Select() 来强制关注它。

我的问题是keyboardDown事件不是在每个键上引发的......它在AZ Escape NumLock Enter Space F1-12 Pause Home Delete上引发。它不会在 Ctrl Shift Tab 返回 1-9 1-9(num) 个箭头​​符号上引发。Alt 和 Alt-Gr 被提升为 Keys.Menu。

我的 Azerty 键盘(对不起,我是法国人)不是原因,我在 Qwerty 模式下进行了测试。

在 WinForm 事件“PreviewKeyDown”上检测到所有键,但 WinForm 不提供 PreviewKeyup 事件...

所以 Keyboard.IsKeyPressed 总是返回 false 并且 KeyboardState 返回 323 false 但 Events.IsEventEnabled() 是 true。

我需要检测何时按下 AZ:好的 我需要检测是否按下了 Ctrl/Shift/Alt:不可以

有任何想法吗 ?谢谢你。

0 投票
1 回答
554 浏览

c# - 在 SdlDotNet 中使用 Video.Screen 而不是 Surface 对象

我见过的每个 SDL 或 SdlDotNet 教程都使用定义的 Surface 作为主屏幕。例如

然而,在尝试使用 SdlDotNet 构建游戏时,我注意到我可以简单地使用 Video.Screen 来执行我通常会在 Surface 屏幕上执行的任何操作。例如:

每个人仍然使用已定义的 Surface 是否有原因?我假设在我的小游戏范围内我没有遇到过某种性能或稳定性问题,但我想知道以防我以后遇到麻烦。

0 投票
1 回答
1572 浏览

c# - 如何将 sdl.net 窗口添加到 C# windows 窗体应用程序?

我有一个几乎完整的 C# winform 应用程序(它很大,所以我不能从头开始重写它),我想向它添加一个 sdl.net 窗口,以便显示我的应用程序在复杂的图形方式(sdl.net 窗口必须以某种方式从我的应用程序中获得稳定的数据流,所以我不能只做另一个项目)。

问题是我该怎么做?这种事情有什么常见的做法吗?或者做类似事情的教程?

简而言之,我可以将 sdl.net 窗口添加到 C# winform 应用程序中,如果可以,那么如何添加?

0 投票
1 回答
204 浏览

mp3 - sdl dot net mp3 支持?

当我加载并播放 ogg 文件时,我听到声音没问题。当我不更改任何代码并指定一个以 mp3 结尾的文件时,我得到一个 SdlException“无法识别的声音文件类型”。自动完成文本说它支持 wave、mp3、ogg 等,但它似乎不支持 mp3。我尝试了不止一个 mp3 文件。

如何加载 mp3?这是我在 winform 应用程序中的快速测试代码