Pergunta

Como desenvolvo GUI em C# Cosmos?

cosmos OS

Nenhuma solução correta

Outras dicas

Aqui está como (com o Milestone 5, mas é semelhante para outras versões). Cosmos faz o material VGA para você. Ele também faz o mouse e o teclado. Ainda não consegui fazer um teclado, mas tenho um mouse de trabalho (embora não tenha conseguido descobrir como ver se os botões estão baixos). Vou mostrar as funções do VGA para você começar. Primeiro, você precisa deste espaço para nome:

using Cosmos.Hardware;

Em seguida, uma variável para a tela morar. Adicione esta variável de nível de classe:

 VGAScreen screen:

Em seguida, para inicializar, adicione este código ao seu método beforerun ():

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

Finalmente, você pode definir a cor dos pixels com:

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

Você define o x qualquer y e a cor, c. As cores estão no formato de cor 256. A matemática está envolvida para fazer formas.

Você terá que escrever o driver VGA primeiro. E o motorista do mouse. E provavelmente faça o coletor de lixo funcionar. Tanto para fazer.

SIM! Você pode, eu tenho um pouco de GUI e um motorista de mouse em funcionamento. Então, sim, é possível, mas leva tempo e você precisa saber o que escrever e ler quando estiver fazendo o motorista do mouse, caso contrário, é possível.

Sou um grande cara do COSMOS, e se alguém se deparar com isso mais tarde quero deixar uma forma de fazer isso a partir de 12/10/2015.

Antes de começarmos eu ALTAMENTE recomendo usar o devkit e não o userkit.Embora o devkit se destine a modificar o próprio Cosmos, você pode ficar totalmente longe disso e fechar a janela do VS quando a instalação for concluída.O kit de desenvolvimento tem todos os recursos que o userkit possui, mas o userkit é atualizado apenas uma vez por mês ou mais, talvez mais, e o devkit é atualizado a cada poucos dias com as correções de bugs e recursos mais recentes.Definitivamente, você deve baixar o devkit, porque ele também tem mais suporte.

Tudo bem, para obter VGA, abra uma nova janela do Visual Studio.Crie um novo Class Library e nomeie-o como quiser.

Vá para referências e adicione uma referência a Cosmos.HAL, Cosmos.Common e Cosmos.System.Você pode encontrá-los em %appdata% oaming\Cosmos User Kit

Entre em AssemblyInfo.cs e adicione using Cosmos.Common;, e na parte inferior adicione a seguinte linha:[conjunto:Anel (Ring.System)]

Tudo bem, agora você precisa entrar e criar uma nova classe com o nome qualquer.

Na parte superior, adicione using Cosmos.HAL e using System.

Adicione duas linhas:

public static VGAScreen screen = new VGAScreen(); e public static Mouse mi = new Mouse(); Nomeie a tela e mi o que quiser.

Crie um método Init e Tick com qualquer nome.

Aqui está um exemplo de método 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);
}

Agora, no método Tick, basta adicionar o que for.Qualquer coisa que você queira que aconteça a cada milissegundo ou mais.Poderia ser, tipo, desenhar o mouse ou algo assim.Você pode encontrar isso em outro lugar na internet, é uma longa história.

Pronto, agora você tem VGA funcionando!

Você pode definir pixels com screen.SetPixel320x200x8(x, y, color);

As cores aplicáveis ​​variam de 0-3f.Ele segue as cores genéricas do console 0-f, mas apenas adiciona muito mais opções.

Agora, basta construir esta dll e refiná-la em seu sistema operacional principal.Agora adicione os métodos yourvgaclass.Init ao método BeforeRun no kernel e yourvgaclass.Tick ao método Run no kernel.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top