Как нарисовать один пиксель в терминале?


10

До сих пор я использовал символы для рисования изображений, фигур и т. Д. В терминале.

Можно ли нарисовать один пиксель?

Скажем так:

foo 1 1 red

Это нарисует красный пиксель в координате (1, 1).

Существует ли существующее приложение, которое будет выполнять эту работу?

На данный момент работает Ubuntu 14.04.


3
Какой у вас терминал? Декабря GT40 ?
Энтон

@Anthon Gnome-Terminal (поставляется с Ubuntu)
Ионика Бизэу

1
@Anthon A DEC GT40было бы полезно, но это слишком дорого ... :-)
Ionică Bizau

1
@terdon Я проголосовал за повторное открытие, потому что это по сути не вопрос программирования (я убрал теги c и c ++ , потому что, если вы собираетесь писать код на C или C ++, это здесь не по теме). «Такой функции нет, вам нужно ее запрограммировать», - здесь будет правильный ответ - за исключением того, что она будет неправильной: хороший ответ будет включать Tektronix и рисование поверх окна терминала, как это делает w3m.
Жиль "ТАК - перестань быть злым"

1
@ Достаточно справедливо, я снова открыл. Я закрыл его, потому что он был в процессе перехода на SO, и это не приветствовалось там.
Тердон

Ответы:


10

Терминалы являются дисплеями символьных ячеек и не поддерживают рисование пиксельной графики. Даже при работе в X11; хотя, конечно, можно рисовать отдельные пиксели при непосредственном общении с X-сервером, если ваша программа общается с терминалом, она может только попросить терминал отображать символы.

Чтобы отображать графику вместо текста, вам нужно написать программу, которая напрямую взаимодействует с X-сервером. Обычно это делается с помощью библиотеки инструментария пользовательского интерфейса, такой как GTK , Qt или wxWidgets .


7
Существуют всевозможные терминалы, некоторые с графическими возможностями (например, режим Tektronix xtermили встраивание изображений terminology). Обратите внимание, что терминал также относится к терминалам X11 (наследники таких вещей, как Tektronix)
Стефан Шазелас

2
Прохладно! Некоторые энтузиасты рисуют 3d чайник в xterm =) dim13.org/2009/02/teapot
gena2x

Если терминал может только «рисовать» символы, то, возможно, пиксель должен быть сделан


1

Вы не сможете рисовать однопиксельные цвета в терминале, если не сможете сделать то, о чем упоминает Вайзард , запрограммировать его самостоятельно или найти инструмент, уже созданный для этой работы (это может зависеть от терминала). Однако в вашем терминале можно использовать координаты отдельных символов для рисования 2D-изображений с использованием символов ASCII и UTF-8. Инструмент для этого называется tput. Этот инструмент работает, управляя положением курсора в соответствии с координатами вашего текущего терминала. Вот примерный список tputфункций:

# tput Cursor Movement Capabilities:

tput cup Y X
    # Move cursor to screen location X,Y (top left is 0,0)

tput sc
    # Save the cursor position

tput rc
    # Restore the cursor position

tput lines
    # Output the number of lines of the terminal

tput cols
    # Output the number of columns of the terminal

tput cub N
    # Move N characters left

tput cuf N
    # Move N characters right

tput cuu N
    # up N lines

tput cud N
    # down N lines

1

Кроме основных виджетов инструментариев (GTK, Qt, WxWidgets) , упомянутых в ответе Wyzard в вы также могли бы рассмотреть больше средств массовой информации , ориентированные библиотеки , как SFML или libSDL . Если вам нужен только графический вывод (практически без взаимодействия), вы можете даже рассмотреть CairoGraphics .

В некоторых случаях вы можете использовать, через канал (например, popen ) или в командной строке, такие командные утилиты, как GNUplot или GraphViz .

Вы могли бы также рассмотреть возможность использования графических возможностей вашего браузера, например , путем кодирования некоторые выделенный веб - приложение ( с помощью библиотеки HTTP - сервера , как Wt или libonion , с веб - технологий , таких как AJAX, SVG, HTML5, холст, WebSockets, и т.д ...)

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.