-1

如何加入这两个东西?如何创建一个小部件(或任何画布)以从另一个线程中绘制它?

4

1 回答 1

2

您可以在此处编辑 OpenTk 源代码下载中的示例之一,以在同一应用程序中拥有一个 GTK# 窗口和一个 OpenTK 游戏窗口。

在此处下载 OpenTK 源代码:http: //sourceforge.net/projects/opentk/files/latest/download

首先,通过构建和运行示例来确保示例正常工作。专门尝试 OpenTK 多线程之一,它应该为您提供两个带有旋转立方体的窗口。

现在,编辑示例以生成 gtk# 窗口而不是第二个 openTK 游戏窗口。

打开文件 opentk/Source/Examples/OpenTK/Test/Multithreading.cs

您将需要创建一个函数来创建一个 gtk 窗口,就像这样

static void gtkWindow() {
    Application.Init ();
    var gtkform = new Gtk.Window("test");
    var btn = new Gtk.Button("flip");
    btn.Clicked += HandleBtnClicked;
    gtkform.Add(btn);
    gtkform.ShowAll();
    Application.Run();
}

现在编辑主循环以启动此窗口,如下所示:

// launch threads
for (int i = 0; i < ThreadCount; i++)
{
    if (i == 0) {
        Thread t = new Thread(RunGame);
        t.IsBackground = true;
        t.Priority = ThreadPriority.BelowNormal;
        t.Start();
        threads.Add(t);
    } else {
        Thread t = new Thread(gtkWindow);
        t.IsBackground = true;
        t.Priority = ThreadPriority.BelowNormal;
        t.Start();
        threads.Add(t);
    }
}

您现在将在同一个应用程序中拥有 Gtk# 窗口和 OpenTK 游戏窗口。

于 2012-01-04T14:36:10.387 回答