Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在sdl.net中初始化曲面变量?_C#_Visual Studio 2010_Sdl.net - Fatal编程技术网

C# 如何在sdl.net中初始化曲面变量?

C# 如何在sdl.net中初始化曲面变量?,c#,visual-studio-2010,sdl.net,C#,Visual Studio 2010,Sdl.net,我正在使用Visual C#2010 Express和SDL.net图形库 我尝试使用SurfaceControl类在winform上绘制,但无法创建空的曲面来绘制。我发现只有一个使用位图的工作示例,尽管在中有这样的方法 我的代码: private void surfaceControl1_Click(object sender, EventArgs e) { Surface surf = new Surface((Bitmap)Bitmap.FromFile("example.png"))

我正在使用Visual C#2010 Express和SDL.net图形库

我尝试使用SurfaceControl类在winform上绘制,但无法创建空的曲面来绘制。我发现只有一个使用位图的工作示例,尽管在中有这样的方法

我的代码:

private void surfaceControl1_Click(object sender, EventArgs e)
{
  Surface surf = new Surface((Bitmap)Bitmap.FromFile("example.png"));
  surfaceControl1.Blit(surf, new Point(0, 0));
  surfaceControl1.Blit(surf, new Point(20, 20));
  // this works

  Surface surf2 = new Surface(20, 20); // <- throws exception on click
  surf2.Fill(Color.White);
  surfaceControl1.Blit(surf2);
}
未处理NullReferenceException 对象引用未设置为对象的实例。 故障排除提示: 使用“new”关键字创建对象实例。。等等

SDl.net有带源代码的示例文件,它使用与我相同的方法初始化曲面变量,但我的方法引发异常。找不到使用SurfaceControl的示例或教程。你知道我做错了什么吗

也找到了这个教程 它使用以下代码:

Surface surface = new Surface(100, 100); //same error here
Surface item = new Surface((Bitmap)Bitmap.FromFile(“example.png”));
surface.Blit(item, new Point(0, 0));
surface.Blit(item, new Point(20, 20));
this.surfaceControl.Blit(surface);
但这段代码也引发了同样的异常

更多信息: 我成功地启动了sdl.net SdlDotNetCDPlayer示例,令人惊讶的是,它抛出了相同的异常!虽然半年前我的笔记本电脑上有这些例子

protected override void OnResize(EventArgs e)
    {
        try
        {
            surf =
                new Surface(
                this.surfaceControl.Width,
                this.surfaceControl.Height); //exception error
            base.OnResize(e);
        }
        catch (AccessViolationException ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }

这可能是SdlDotNet.dll中的错误。当我引用DLL的版本6.1时,我收到相同的运行时错误。当我引用DLL的5.0版时,它运行良好


请注意,v5对曲面使用了一组稍有不同的初始化,因此您可能需要调整代码。

这并不糟糕,因为它不符合我的需要,因为它没有提供信息,不足以理解或从中创建工作示例。示例代码不起作用,并且没有解释为什么不起作用。我使用了其他教程,与此()相比,它非常棒。然后停止使用这样的单词!我为我的不尊重感到抱歉。@L.B你能删除“重复”符号吗,因为我仔细阅读了关于空异常的建议链接,但没有任何帮助,我认为这是sdl.net的问题,而不是普通的c代码错误。该链接没有适合此问题的sdl.net示例。
Surface surface = new Surface(100, 100); //same error here
Surface item = new Surface((Bitmap)Bitmap.FromFile(“example.png”));
surface.Blit(item, new Point(0, 0));
surface.Blit(item, new Point(20, 20));
this.surfaceControl.Blit(surface);
protected override void OnResize(EventArgs e)
    {
        try
        {
            surf =
                new Surface(
                this.surfaceControl.Width,
                this.surfaceControl.Height); //exception error
            base.OnResize(e);
        }
        catch (AccessViolationException ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }