Графический интерфейсы пользователя консольного приложения

Как похожи на графический интерфейсы пользователя, которые это сделало, но в консольных приложениях?

Существует много примеров, таких как alsamixer: alt text

5
задан Infuzion 15 September 2017 в 06:48
поделиться

5 ответов

Такие библиотеки, как Curses, делают это почти так же, как оконные менеджеры запускают графические среды. Элементы управления, такие как окна, кнопки, флажки, определяются библиотекой.

Вместо WriteLining на экране вы пишете текст в окно или устанавливаете текст некоторого элемента управления. Библиотека отслеживает окна, перекрытия, эффекты границ, тени, поведение перетаскивания (если поддерживается мышь). Он создает символьный буфер из символов, цветов переднего и заднего плана.

Опубликованный пример goto (x, y) будет работать, но если реализация сделает это для каждого символа, производительность будет заметно отставать. Чтобы получить скорость, когда вы вносите изменения в некоторый текст или другие свойства, библиотека знает прямоугольные области, которые необходимо обновить из символьного буфера, и записывает новые символьные данные для этой области на экран одним блоком с оптимизированными вызовами. к видео драйверам.

В отличие от базовых консольных приложений, которые просто выводят на экран каждый печатаемый символ, ввод с клавиатуры в этих расширенных приложениях перехватывается, и такие символы более явно записываются (или не записываются, в случае горячих клавиш вашего приложения) справа окно или что-то еще.

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

1
ответ дан 13 December 2019 в 19:22
поделиться

Termbox - интересная альтернатива ncurses, которая также может вас заинтересовать.

2
ответ дан 13 December 2019 в 19:22
поделиться

Библиотека Curses может использоваться для создания таких пользовательских интерфейсов. Вот введение в NCurses - наиболее известную реализацию Curses.

4
ответ дан 13 December 2019 в 19:22
поделиться

В DOS до появления Windows было доступно множество различных API-интерфейсов с «графическим интерфейсом», все из которых в основном скрывали базовые вызовы VGA, которые вам нужно было сделать, если вы хотели писать код напрямую. Я лично работал с TurboPascal и Foxpro. Вкратце был даже Visual Basic для DOS, который включал аналогичный API. Помимо вывода текста, эти API-интерфейсы часто включают в себя такие функции, как раскрывающиеся меню, рисование простых рамок и затенение. Некоторые из более сложных могут иметь даже символьную «Windows», которую можно перетаскивать по экрану с помощью курсора.

Доступ к VGA можно было получить либо в текстовом (очень похоже на терминал мэйнфрейма, где вы фактически просто выводите символ в строке / столбце), либо в графическом режиме, который был намного больше похож на GDI (хотя вам приходилось делать все , был медленным и редко использовался ни для чего, кроме ранних программ рисования и CAD). Ваш пример - текстовый режим.

В Unix, где такие соображения гораздо более актуальны, стандартом является использование Curses , аналогичного API текстового режима, который скрывает основные характеристики терминала.

2
ответ дан 13 December 2019 в 19:22
поделиться

Большинство консольных платформ имеют такие функции, как goto (x, y) для размещения курсора где-нибудь на экране.

Это можно использовать, чтобы «раскрасить» экран любыми символами / цветами ascii, которые вы хотите.

2
ответ дан 13 December 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: