Ir al contenido


Foto

¿Cómo se crea el GUI de los sistemas operativos?


  • Por favor identifícate para responder
3 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 01 septiembre 2010 - 10:11

He estado investigando sin embargo no encuentro documentación sobre el tema, estoy interesado en la tecnica que se usó para darle el GUI a los sistemas operativos osea los gráficos como fue que se hizo posible poder visualizar todo como si fuece un video y con tal calidad de color entre otras cosas , lo que me interesa como es que se implementa eso de crear una interfaz gráfica de usuario para un sistema ,como los que hicieron Gnome de linux o KDE osea como pasaron todo a gráficos donde antes todo era con linea de comandos ,espero su respuesta gracias de antemano.
  • 0

#2 Jagluiperd

Jagluiperd

    Member

  • Miembros
  • PipPip
  • 36 mensajes
  • LocationBuscando a Wally

Escrito 02 septiembre 2010 - 03:16

Hola Master23.

Existe mucha documentación al respecto, el problema es saber qué buscar. Supongo que eres una persona lo suficientemente joven para no haber conocido/trabajado en entornos MsDOS, y por tanto supongo también que por ello te resulta tán dificil dar con la "llave" para esa búsqueda.

El tema que intestas desvelar no es nada trivial, y bien podría dar para escribir un libro muy gordo. Pero grande-grande.
Yo podría resumirtelo en unas lineas, pero sería como mostrate un cubito de hielo, y que te imaginases un Iceberg.


Veamos:

Todos los GUI (Linux/MacOS/Solaris/Win CE/BeOS/MS Windows/etc), no son más que rutinas gráficas de muy bajo nivel contenidas en una librería y que emplea el S.O. para dibujar en pantalla todo lo que vemos. El método de trabajo es ir dibujando y capturando linea a linea. Las rutinas y las tarjetas gráficas empleadas hoy en día permiten que todo esto se haga lo suficientemente rápido como para engañar al ojo humano y que el cerebro (como dices) tenga la ilusión de estar viendo un vídeo.

En los comienzos de este tipo de interfaz de usuario, eran los propios programas los encargados de dibujar todo: Tú simplemente ejecutabas el programa desde una interfaz de MsDOS (por ejemplo [C:programa.exe+Intro]) y a continuación la pantalla se convertia magicamente en una interfaz GUI (ventanas/controles/texto/ratón). Los programadores de aquellos tiempos tenian que encargarse de todo: Activar el modo gráfico, dibujar/desdibujar las ventanas, hacer aparecer el ratón, hacer que el ratón no fuese desdibujando lo ya dibujado, hacer que los botones tuviesen el efecto de "pulsado/recuperaestado", vamos... una locura.

La cuestión era que tras finalizar con ese programa, se volvía al entorno MsDOS de nuevo. Los actuales y pasados S.O. con GUI encapsulan esa parte en librerías propias, y el programador solo ha de ocuparse de la parte "importante", dejando el tema gráfico y de eventos sobre esos gráficos al propio S.O. y al compilador/lenguaje sobre el que trabaja.

Por ejemplo, para dibujar una ventana:
  1- Dibujar primero un rectángulo y rellenarlo de un color dado (normalmente gris).
  2- Si queremos efecto 3D, dibujar lineas de color blanco en el borde superior e izquierdo y lineas en gris oscuro en
      el borde derecho e inferior.
  3- A continuación se dibujarían los controles en esa "ventana". Si queremos un botón, pues dibujamos un rectángulo de color
      negro sin relleno (aprovechamos el gris de la ventana), y dentro de ese rectángulo dibujamos lineas como las que dan el efecto
      3D a la ventana. Para simular un botón pulsado, invertimos el color de las lineas: El blanco pasa a ser gris oscuro y viceversa, con
      lo que el efecto es de un boton hundido. Si a eso le añadimos un "delay", tenemos el efecto del botón hundiéndose y
      recuperándose.

Una forma de probar esto bajo un entorno IDE/WYSIWYG es haciendo pruebas de dibujo en un "canvas" mediante código.

Si quieres profundizar más sobre el tema, te siguiero lo siguiente:

1 - Obten una copia de los siguientes compiladores para entornos DOS: Turbo Pascal, TMTPascal, Dev Pascal, o Free Pascal y lo
    instalas en tu máquina.

2- Vas a google y realizas una búsqueda con las siguientes cadenas:
    [pascal 640x480]
    [pascal bgi]
    [pascal vga]
    [pascal uses vga bgi mouse]
    [pascal graph bgi]
    [pascal svga]

3- Haces pruebas "ensayo-error" con los códigos que puedas encontrar en esas búsquedas. Algunas de esas búsquedas incluso arrojan
    páginas con verdaderas Joyas de la Corona de los tiempos de la "SOLOCONSOLA", como le llamo yo.

Sinceramente espero haberte ayudado un poco en este tema. Es un aspecto bonito de la programación, requiere su tiempo para hacer bien las cosas, pero los resultados obtenidos merecen la pena. Lástima que sea tan cansino a veces.

Saludos.
  • 0

#3 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 02 septiembre 2010 - 08:56

Hola Master23.

Existe mucha documentación al respecto, el problema es saber qué buscar. Supongo que eres una persona lo suficientemente joven para no haber conocido/trabajado en entornos MsDOS, y por tanto supongo también que por ello te resulta tán dificil dar con la "llave" para esa búsqueda.

El tema que intestas desvelar no es nada trivial, y bien podría dar para escribir un libro muy gordo. Pero grande-grande.
Yo podría resumirtelo en unas lineas, pero sería como mostrate un cubito de hielo, y que te imaginases un Iceberg.


Veamos:

Todos los GUI (Linux/MacOS/Solaris/Win CE/BeOS/MS Windows/etc), no son más que rutinas gráficas de muy bajo nivel contenidas en una librería y que emplea el S.O. para dibujar en pantalla todo lo que vemos. El método de trabajo es ir dibujando y capturando linea a linea. Las rutinas y las tarjetas gráficas empleadas hoy en día permiten que todo esto se haga lo suficientemente rápido como para engañar al ojo humano y que el cerebro (como dices) tenga la ilusión de estar viendo un vídeo.

En los comienzos de este tipo de interfaz de usuario, eran los propios programas los encargados de dibujar todo: Tú simplemente ejecutabas el programa desde una interfaz de MsDOS (por ejemplo [C:programa.exe+Intro]) y a continuación la pantalla se convertia magicamente en una interfaz GUI (ventanas/controles/texto/ratón). Los programadores de aquellos tiempos tenian que encargarse de todo: Activar el modo gráfico, dibujar/desdibujar las ventanas, hacer aparecer el ratón, hacer que el ratón no fuese desdibujando lo ya dibujado, hacer que los botones tuviesen el efecto de "pulsado/recuperaestado", vamos... una locura.

La cuestión era que tras finalizar con ese programa, se volvía al entorno MsDOS de nuevo. Los actuales y pasados S.O. con GUI encapsulan esa parte en librerías propias, y el programador solo ha de ocuparse de la parte "importante", dejando el tema gráfico y de eventos sobre esos gráficos al propio S.O. y al compilador/lenguaje sobre el que trabaja.

Por ejemplo, para dibujar una ventana:
  1- Dibujar primero un rectángulo y rellenarlo de un color dado (normalmente gris).
  2- Si queremos efecto 3D, dibujar lineas de color blanco en el borde superior e izquierdo y lineas en gris oscuro en
      el borde derecho e inferior.
  3- A continuación se dibujarían los controles en esa "ventana". Si queremos un botón, pues dibujamos un rectángulo de color
      negro sin relleno (aprovechamos el gris de la ventana), y dentro de ese rectángulo dibujamos lineas como las que dan el efecto
      3D a la ventana. Para simular un botón pulsado, invertimos el color de las lineas: El blanco pasa a ser gris oscuro y viceversa, con
      lo que el efecto es de un boton hundido. Si a eso le añadimos un "delay", tenemos el efecto del botón hundiéndose y
      recuperándose.

Una forma de probar esto bajo un entorno IDE/WYSIWYG es haciendo pruebas de dibujo en un "canvas" mediante código.

Si quieres profundizar más sobre el tema, te siguiero lo siguiente:

1 - Obten una copia de los siguientes compiladores para entornos DOS: Turbo Pascal, TMTPascal, Dev Pascal, o Free Pascal y lo
    instalas en tu máquina.

2- Vas a google y realizas una búsqueda con las siguientes cadenas:
    [pascal 640x480]
    [pascal bgi]
    [pascal vga]
    [pascal uses vga bgi mouse]
    [pascal graph bgi]
    [pascal svga]

3- Haces pruebas "ensayo-error" con los códigos que puedas encontrar en esas búsquedas. Algunas de esas búsquedas incluso arrojan
    páginas con verdaderas Joyas de la Corona de los tiempos de la "SOLOCONSOLA", como le llamo yo.

Sinceramente espero haberte ayudado un poco en este tema. Es un aspecto bonito de la programación, requiere su tiempo para hacer bien las cosas, pero los resultados obtenidos merecen la pena. Lástima que sea tan cansino a veces.

Saludos.

Muchas gracias por la ayuda me has aclarado una gran duda voy a investigar sobre lo que mencionaste ,muchas gracias de nuevo.
  • 0

#4 jorgeu

jorgeu

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 179 mensajes
  • LocationMaracaibo

Escrito 19 octubre 2010 - 07:26

Para complementar un poco

En la actualidad el sistema operativo ofrece acceso al hardware de video y le acompaña una insfraestructura mínima de primitivas gráficas. Sobre esta se usan bibliotecas que son responsables de ofrecer los "widgets" que son los botones, cajas de texto, labels, etc.

En sistemas unix está claramente separado lo que describo. El servidor X posee la parte de primitivas gráficas y bibliotecas como motif, gtk, qt, etc. ofrecen los widgets.

En Windows todo está implementado en las MFC.

De ahí en adelante están los escritorios que usando las bibliotecas anteriores muestran gráficamente los directorios y ofrecen fácil acceso a las aplicaciones.

En Windows es el proceso "explorer" que por cierto puedes "matar" y te queda el puro fondo del escritorio y en Linux tenemos varios como gnome y kde. También hay otros más sencillos que no son considerados escritorios sino "manejadores de ventanas" como Windows Maker, Fluxbox entre otros. No tienen el concepto de escritorio como tal pero sí permiten navegar por los archivos y ejecutar facilmente aplicaciones. Son ideales para computadores con bajos recursos.

Saludos

Saludos
  • 0




IP.Board spam blocked by CleanTalk.