小编Ray*_*Ray的帖子

我如何播放.MDS(MIDI Stream)音乐文件?

我提取一些数据的几个游戏使用MIDI作为游戏中的音乐.

但是,此音乐存储在.MDS文件中,该文件似乎与.MID或其他MIDI格式没有相似之处.标题显示"RIFF"和"MIDSfmt".

我在网上搜索了关于这种文件格式的一些信息,但发现它意味着"MIDI会话",并被"Sound Imp."使用.

我找不到此程序或有关此文件格式的任何其他附加信息.

你知道一个转换器或工具来播放这些文件中以某种方式包含的明显的MIDI数据吗?我在Stack Overflow上发布这个,因为有关如何解析它的信息也非常感谢.

midi file-format

5
推荐指数
1
解决办法
1698
查看次数

如何更改在Google App Inventor中创建的Android应用程序的图标?

我正在谷歌应用程序发明者中创建一个Android应用程序.每次创建应用程序时,应用程序创建者本身都会创建一个默认图标.我不知道如何更改此图标.

有人能告诉我如何更改在Google App Inventor中创建的Android应用程序的图标吗?

android android-emulator android-intent android-layout android-listview

5
推荐指数
2
解决办法
3万
查看次数

在哪里调用base.WndProc()或base.DefWndProc()?

我有一些关于覆盖Windows窗体/ NativeWindow的WndProc方法的问题.

WndProc和DefWndProc之间究竟有什么区别(编辑:我之前认为它叫做"DefaultWndProc")?我只能覆盖WndProc,但什么是DefWndProc,我可以随时调用它?

在我的重写方法中调用base.WndProc的位置?或者我应该调用DefWndProc吗?我想到了以下立场:

protected override void WndProc(ref Message m)
{
    // 1st: I call the base handler at the start, in front of my handling.
    // Are there disadvantages here?
    base.WndProc(ref m);

    switch (m.Msg)
    {
        case (int)WindowsMessage.Paint:
            // 2nd: Do whatever you want to do now. I could also place
            // base.WndProc for each message manually here, at a point I
            // can control myself. It makes the method a little messy
            // since I have several base calls …
Run Code Online (Sandbox Code Playgroud)

c# overriding base wndproc

5
推荐指数
1
解决办法
6667
查看次数

Tait-Bryan 角度的四元数

我正在用 SharpDX 编写一个相机,并在四元数的帮助下旋转它。

  • 相机旋转通过俯仰(X 旋转)、偏航(Y 旋转)和滚动(Z 旋转)进行设置,即所谓的“Tiat-Bryan”角度(这些不是具有XYX 旋转的欧拉角,也不是 XYZ)。
  • 我使用左手坐标系:X+ 向右,Y+ 向上,Z+ 向下。
  • 如果我围绕 X 旋转(“俯仰”),正值会使相机向下看。如果我绕 Y 旋转(“偏航”),正值会使相机向左看。如果我绕 Z 轴旋转(“滚动”),相机会顺时针滚动。

我已经能够从四元数 s 获得俯仰、偏航和滚转。以下 C# 代码:

public static class QuaternionExtensions
{        
    public static Vector3 GetPitchYawRoll(this Quaternion q)
    {
        return new Vector3(q.GetPitch(), q.GetYaw(), q.GetRoll());
    }

    public static float GetPitch(this Quaternion q)
    {
        return q.GetK().GetPitch();
    }

    public static float GetYaw(this Quaternion q)
    {
        return q.GetK().GetYaw();
    }

    public static float GetRoll(this Quaternion q)
    {
        // This is M12 * M22 of rotation …
Run Code Online (Sandbox Code Playgroud)

camera rotation quaternions sharpdx

5
推荐指数
1
解决办法
3862
查看次数

String.Format() 带有前导零的十六进制不适用于第二个参数

我面临着一个奇怪的问题String.Format()。我需要格式化两个带有前导零的十六进制数字以填充最多 8 位数字。但是,它仅适用于第一个参数 ( {0:X8})。对于第二个参数 ( {1:X8}),仅打印“X8”。

这是我的代码:

public struct DataDirectory
{
    public uint VirtualAddress
    {
        get;
        internal set;
    }

    public uint Size
    {
        get;
        internal set;
    }

    public override string ToString()
    {
        return String.Format("{{VirtualAddress=0x{0:X8},Size=0x{1:X8}}}", VirtualAddress, Size);
    }
}
Run Code Online (Sandbox Code Playgroud)

调试器输出打印以下内容:

调试器输出

编辑:如果我删除格式字符串开头和结尾处的大括号,它似乎可以工作,但随后我会丢失返回的字符串中的大括号ToString()(调试器仍将它们添加到 QuickWatch 窗口中):

return String.Format("VirtualAddress=0x{0:X8},Size=0x{1:X8}", VirtualAddress, Size);
Run Code Online (Sandbox Code Playgroud)

是否可以用 格式化两个十六进制数String.Format()

c# string.format

5
推荐指数
1
解决办法
3460
查看次数

是否可以在不复制C#8中的元素的情况下遍历结构数组?

借助C#8中新的只读实例成员功能,我尝试减少代码中结构实例的不必要复制。

我确实foreach对结构数组进行了一些迭代,根据此答案,这意味着在数组上进行迭代时将复制每个元素。

我以为我现在可以直接修改代码以防止复制,就像这样:

// Example struct, real structs may be even bigger than 32 bytes.
struct Color
{
    public int R;
    public int G;
    public int B;
    public int A;
}

class Program
{
    static void Main()
    {
        Color[] colors = new Color[128];
        foreach (ref readonly Color color in ref colors) // note 'ref readonly' placed here
            Debug.WriteLine($"Color is {color.R} {color.G} {color.B} {color.A}.");
    }
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,这与

CS1510  A ref or out value …
Run Code Online (Sandbox Code Playgroud)

c# ref c#-8.0

5
推荐指数
2
解决办法
131
查看次数

列出哪些指数可以向两个方向扩展?

我打算写一个游戏(如果你听说过它叫做"Qwirkle"),其中一个二维游戏场存储玩家放入其中的宝石的位置.第一个玩家将石头放在任何地方,其他玩家可以从任何一侧(左/右/上下)连接到它.游戏领域本身不限于固定大小,这会破坏游戏理念.但是,宝石的数量限制为玩家在开始时可以定义的值.

由于游戏逻辑,我需要通过索引循环穿过石头.但是,由于玩家可以从任何一侧添加石头,我需要一个可扩展到任何方向的列表(例如,进入负向和正向索引方向).

性能并不重要,因为我需要一次检查几块石头.

当然,最好的方法是使用像_stones [-3,5]这样的石头来访问位于-3,5位置的石头.

我认为可以从任何一侧推送和弹出的堆栈(如PushBack/PushFront)对此有用,但我不太确定如何在C#中实现它.

是否有预先实现的列表/堆栈,就像我正在考虑的那样,或者我的方法是否完全奇怪?

c# indexing stack list

4
推荐指数
1
解决办法
427
查看次数

Visual Studio 2013始终在"类别排序"中打开"属性"窗口

我很确定微软在Visual Studio 2010 - 2012/2013之间改变了一些东西.

每当我在Visual Studio 2013实例中第一次打开"属性"窗口时,它默认为"类别"排序而不是"字母顺序"排序.

在2010年,我知道排序是在VS的新实例中存储和记住的.如果我之前使用过字母排序,它会按字母排序打开属性窗口.

然而,在2013年,它始终默认为类别.这真的很烦人,因为我的眼睛不习惯在Windows.Forms控件属性的长列表中找到属性.

任何人都可以重现这个问题,甚至可以解决这个问题吗?

visual-studio-2010 visual-studio visual-studio-2012 visual-studio-2013

4
推荐指数
1
解决办法
1524
查看次数

在.NET中实现加密/解密流的正确方法?

我想导入和导出旧的游戏文件格式,并且其数据是加密的。详细信息请参见此处;简而言之,文件被分成块,每个块都使用基于前一个 uint 的特定类型的 XOR 加密,并且校验和跟踪每个块,我在读取数据时需要跳过这些块。

BinaryReader/Writer通常,我想设计放在游戏文件上可重用的流,如果有一个流在后台进行加密/解密,而开发人员只是使用 a来做一些ReadUInt32()事情等,那就太好了。

所以我到目前为止我研究了.NET中有一个CryptoStream类,实现加密/解密的“正确”方法是否从继承该类开始?我没有找到关于有人尝试过这种方式的文章,因此我不确定我在这里是否完全错误。

c# encryption file-format stream

4
推荐指数
1
解决办法
1263
查看次数

Outlook 2013不从mailto链接获取主题

我们的程序生成一个简单的mailto链接,如下所示:

mailto:bernd@bernd.de?&subject=dolphin&body=bla
Run Code Online (Sandbox Code Playgroud)

当我们打开此链接或将其粘贴到任何浏览器中时,Outlook 2013会启动并填写收件人和正文,无论我通过什么主题,主题始终保持为空.在公司里,我似乎不是唯一一个有这个问题的人.

我不太确定这是一个Outlook设置问题还是格式错误的链接,这就是我先问这里的原因.

mailto outlook

3
推荐指数
1
解决办法
2001
查看次数