Як намалювати один піксель у терміналі?


10

До цих пір я використовував символи для малювання зображень, фігур тощо у терміналі.

Чи можна намалювати один піксель?

Скажімо:

foo 1 1 red

Це дозволить намалювати червоний піксель на координаті (1, 1).

Чи існує програма, яка буде виконувати цю роботу?

На даний момент працює Ubuntu 14.04.


3
Який у вас термінал? Грудня GT40 ?
Антон

@Anthon Gnome-Terminal (постачається разом з Ubuntu)
Ionică Bizău

1
@Anthon A DEC GT40було б корисно, але це занадто дорого ... :-)
Ionică Bizău

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

1
@Gilles досить чесно, я знову відкрився. Я закрив його, тому що він був перенесений на територію SO, і це не було бажано.
terdon

Відповіді:


10

Термінали є символьними осередками , не підтримують малювання піксельної графіки. Навіть при запуску в X11; хоча, звичайно, можна малювати окремі пікселі при спілкуванні безпосередньо з сервером X, якщо ваша програма розмовляє з терміналом, вона може лише попросити термінал відобразити символи.

Для відображення графіки замість тексту вам потрібно буде написати програму, яка взаємодіє безпосередньо з сервером X. Зазвичай це робиться через бібліотеку інструментарію інтерфейсу користувача, наприклад GTK , Qt або wxWidgets .


7
Є всілякі термінали, деякі з графічними можливостями (наприклад, режим Tektronix xtermабо вбудовування зображень terminology). Зауважте, що термінал також посилається на термінали X11 (наступники таких речей, як Tektronix)
Stéphane Chazelas

2
Класно! Деякі ентузіасти малюють 3d чайник у xterm =) dim13.org/2009/02/teapot
gena2x

Якщо термінал може лише "намалювати" символи, то, можливо, піксель повинен бути зроблений

10

Погляньте на бібліотеку Drawille . Він використовує символи шрифту Брайля UTF для малювання пікселів.


1
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
slm

1

Ви не зможете намалювати кольори одного пікселя в терміналі, якщо не зможете виконати те , що згадує Wyzard , запрограмувати його самостійно або знайти вже створений інструмент для роботи (це може бути залежно від терміналу). Однак можна використовувати окремі координати символів у своєму терміналі для малювання 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, полотно, веб-розетки тощо).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.