如何在 C# Cosmos 中开发 GUI?
4 回答
方法如下(里程碑 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 色格式。数学是用来制作形状的。
您必须先编写 VGA 驱动程序。还有鼠标驱动。并且可能让垃圾收集器运行起来。需要做的事情还很多。
是的!你可以,我有一个很好的 gui 和一个工作鼠标驱动程序。所以,是的,这是可能的,但需要时间,而且你需要知道在做鼠标驱动程序时要写和读什么,否则,这是可能的。
我是 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 方法中。