2010-05-24 20 views

Respuesta

1

Las bibliotecas como Curses lo hacen de forma muy parecida a como los administradores de ventanas ejecutan entornos gráficos. Controles tales como ventanas, botones, casillas de verificación están todos definidos por la biblioteca.

En lugar de escribir WriteLining en la pantalla, está escribiendo texto en una ventana o configurando el texto de algún control. La biblioteca realiza un seguimiento de las ventanas, superposición, efectos de borde, sombras, comportamiento de arrastre (si el mouse es compatible). Construye un buffer de caracteres de personajes, primer plano y colores de fondo.

El ejemplo de goto (x, y) publicado funcionaría, pero si la implementación lo hiciera para cada personaje, el rendimiento se retrasaría notablemente. Para obtener la rapidez, cuando realiza un cambio en algún texto u otras propiedades, la biblioteca conoce las regiones rectangulares que deben actualizarse desde el búfer de caracteres y escribe los datos de los nuevos caracteres para esa región en la pantalla en un fragmento con llamadas optimizadas a los controladores de video.

A diferencia con las aplicaciones básicas de la consola que acaba de eco de cada carácter imprimible a la pantalla, la entrada de teclado en estas aplicaciones avanzadas intercepta y estos caracteres se escriben de forma más explícita a (o no escrito para, en el caso de teclas de acceso rápido de su aplicación) del ventana derecha o lo que sea.

Ojalá .Net tenía toda una biblioteca de ventanas de consola incorporada. ... [Suspiro] Creo que esas viejas aplicaciones de estilo de consola se ven muy dulces.

+0

Estoy de acuerdo. Se ven increíbles :) –

2

La mayoría de las consolas tienen funciones como Goto (x, y) para posicionar un cursor en algún lugar de la pantalla.

Esto se puede utilizar para "pintar" la pantalla con los caracteres/colores ascii que desee.

4

La biblioteca Curses se puede utilizar para crear dichas interfaces de usuario. Aquí hay un introduction para NCurses, la implementación de Curses más conocida.

+0

¿Alguna envoltura para usar con C#? – masfenix

+1

@masfenix lo miraste: http://www.mono-project.com/MonoCurses – Cohen

2

es una alternativa interesante a ncurses, que también podría interesarte.

2

En DOS había muchas API "GUI" diferentes disponibles antes de que apareciera Windows, todas las cuales básicamente ocultaban las llamadas VGA subyacentes que necesitabas hacer si querías codificar directamente. Con los que trabajé personalmente incluí TurboPascal y Foxpro. Hubo incluso, brevemente, un Visual Basic para DOS que incluía una API similar. Además de producir texto, estas API a menudo incluyen funciones tales como menús desplegables, cuadros simples de dibujo y sombreado. Algunas de las más complejas incluso tienen 'Windows' basado en caracteres que puede arrastrar por la pantalla con el cursor.

VGA puede ser visitada en cualquier texto (muy parecido a un terminal de computadora central donde efectivamente solo salidas de un carácter en la fila/columna) o el modo de gráficos que era mucho más similar a la GDI (a pesar de que tenía que hacer todo mismo , fue lento y rara vez se usó para nada excepto para los primeros programas de pintura y cad). Tu ejemplo es el modo texto.

En Unix, donde tales consideraciones son mucho más actuales, el estándar es usar Curses, que es una API de modo de texto similar que oculta las características del terminal subyacente.

Cuestiones relacionadas