-4

如何在 C# Cosmos 中开发 GUI?

宇宙操作系统

4

4 回答 4

7

方法如下(里程碑 5,但其他版本类似)。Cosmos 为您做 VGA 的东西。它也做鼠标和键盘。我还不能制作键盘,但是我有一个可以工作的鼠标(尽管我还没有找到如何查看按钮是否按下的方法)。我将向您展示 VGA 功能以帮助您入门。首先,您需要这个命名空间:

using Cosmos.Hardware;

然后,为屏幕提供一个变量。添加这个类级别的变量:

 VGAScreen screen:

然后,为了初始化它,将此代码添加到您的 BeforeRun() 方法中:

screen = new VGAScreen();
screen.SetMode320x200x8();
screen.Clear(0);

最后,您可以设置像素的颜色:

screen.SetPixel320x200x8(uint x, uint y, uint c);

您设置 x 任意 y 和颜色 c。颜色采用 256 色格式。数学是用来制作形状的。

于 2012-07-17T23:16:10.753 回答
3

您必须先编写 VGA 驱动程序。还有鼠标驱动。并且可能让垃圾收集器运行起来。需要做的事情还很多。

于 2010-03-12T00:50:16.050 回答
1

是的!你可以,我有一个很好的 gui 和一个工作鼠标驱动程序。所以,是的,这是可能的,但需要时间,而且你需要知道在做鼠标驱动程序时要写和读什么,否则,这是可能的。

于 2010-07-31T19:07:32.347 回答
1

我是 COSMOS 的大佬,如果以后有人遇到这个问题,我想在 2015 年 10 月 12 日之前留下办法。

在我们开始之前,我强烈建议使用 devkit 而不是 userkit。虽然 devkit 旨在修改 Cosmos 本身,但您可以完全远离它,并在安装完成后关闭 VS 窗口。devkit具有userkit 的所有功能,但 userkit 大约每个月只更新一次,也许更多,并且 devkit 每隔几天就会更新一次,包含最新的错误修复和功能。您绝对应该下载 devkit,因为它也有最多的支持。

好吧,要获得 VGA,请打开一个新的 Visual Studio 窗口。创建一个新的Class Library并将其命名为您想要的任何名称。

转到引用并添加对 Cosmos.HAL、Cosmos.Common 和 Cosmos.System 的引用。您可以在 %appdata%\Roaming\Cosmos 用户工具包中找到它们

进入 AssemblyInfo.cs 并添加using Cosmos.Common;,并在底部添加以下行:[assembly: Ring(Ring.System)]

好的,现在您需要进入并创建一个名为whatever 的新类。

在顶部,添加 using Cosmos.HAL 和 using System。

添加两行:

public static VGAScreen screen = new VGAScreen();public static Mouse mi = new Mouse(); 名称屏幕和 mi 任何你想要的。

创建一个名为whatever 的Init 和Tick 方法。

这是一个示例 Init 方法:

public static void InitVGA() {
    //Make SURE you have this exact line or else it won't work!  Any size other than 320x200 is broken, and 8-bit is the highest VGA compatible color depth.
    screen.SetGraphicsMode(VGAScreen.ScreenSize.Size320x200, VGAScreen.ColorDepth.BitDepth8);
    //There's a bug currently where only 6-bit color is supported with 8-bit.  0x3f is pure white.
    screen.Clear(0x3f);

    //mi.Initialize(320, 200);
}

现在在 Tick 方法中,添加任何内容。任何你想每毫秒左右发生的事情。它可能是,例如,绘制鼠标或其他东西。你可以在互联网上的其他地方找到,这是一个很长的故事。

好了,现在你有工作的VGA了!

您可以使用 screen.SetPixel320x200x8(x, y, color); 设置像素。

适用颜色范围为0-3f。它遵循通用控制台颜色 0-f,但只是添加了更多选项。

现在,只需构建这个 dll 并将其引用到您的主操作系统中。现在将方法 yourvgaclass.Init 添加到内核中的 BeforeRun 方法中,并将 yourvgaclass.Tick 方法添加到内核中的 Run 方法中。

于 2015-10-12T14:32:47.227 回答