Графический интерфейс в космосе: помощь в C#

Я использовал Cosmos в Microsoft Visual C# 2008 для создания примитивных, TUI, операционных систем. Интересно, как сделать GUI в Космосе. Я знаю, что это возможно, но я просто хочу знать, как это сделать. Конструктивная критика приветствуется, оскорбления не принимаются! Пожалуйста, ответьте с кодом (и комментариями в коде), потому что я абсолютный новичок, лишь немного знающий основные команды С#. Спасибо!


person smilinggoomba    schedule 03.07.2011    source источник
comment
В последний раз, когда я смотрел несколько лет назад, поддержка мыши и VGA была насущной необходимостью. Они все еще есть. Без них нельзя сделать графический интерфейс.   -  person Hans Passant    schedule 03.07.2011


Ответы (3)


Я не знаю, какую веху вы используете, но я думаю, что это может сработать для вас. Вам нужна эта переменная уровня класса:

 Cosmos.Hardware.VGAScreen screen;

И в вашем методе Init:

 screen = new Cosmos.Hardware.VGAScreen();
 screen.SetMode300x200x8();
 screen.Clear(0);
 //done init vga screen

После этого последнего комментария в вашем коде вы можете использовать это, чтобы установить цвет пикселя:

 screen.SetPixel300x200x8(uint x, uint y, uint color);

Параметр цвета — это цвет пикселя в формате 256 цветов (числа от 0 до 255). Это все, что вам нужно для создания графического интерфейса. Тем не менее, вам нужно много математических навыков, чтобы создавать фигуры.

person pjrader1    schedule 16.07.2012

Есть также GUI API с функциями для создания фигур. Поищите в Google/YouTube или посетите страницу обсуждения на странице Cosmos Codeplex:

http://cosmos.codeplex.com/discussions

person Xesau    schedule 05.05.2013

Это на 2020 год, потому что это ОЧЕНЬ хороший способ сделать это в космосе. (С ИСПОЛЬЗОВАНИЕМ СГС)

using System;
using System.Drawing;
using Cosmos.System.Graphics;
using Sys = Cosmos.System;

namespace Graphics
{
    public class Kernel : Sys.Kernel
    {
        Canvas canvas;

        protected override void BeforeRun()
        {
            canvas = FullScreenCanvas.GetFullScreenCanvas();
            canvas.Clear(Color.Black);
        }

        protected override void Run()
        {
            Pen pen = new Pen(Color.White);
            // DRAW stuff see https://www.gocosmos.org/docs/cosmos-graphic-subsystem/
        }
    }
}
person Eli Ozcan    schedule 24.10.2020