Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Linux, консольный режим, простая графика.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Serhiy_UA
Осваиваю Linux (точнее Free BSD), программируя на С++.
Вопрос такой, какие есть средства в Linux для работы с простой графикой в консольном режиме?
Аналогичные средства под Windows для консоли есть в WinAPI, через подключение #include <windows.h>.
А какие есть в Linux, кроме библиотеки Qt, или остается только Qt.
Вопрос учебного характера, для самообразования, в работе для графики используется только Qt.
krux
а какая может быть графика в консольном режиме?
если речь про псевдографику - то посмотрите ncurses
Lagman
Кроме самой популярной библиотеки, её уже назвали, ncurses, еще вспомнился Turbo Vision, есть его "клоны" для linux.
Jury093
Цитата(krux @ Jun 12 2016, 12:38) *
а какая может быть графика в консольном режиме?

например, вывод видео в консоли (mplayer) или графических файлов (fbi)..
простейший случай вывода графики (при наличие прав)
Код
cat /dev/urandom > /dev/fb0

2ТС - гуглите "линукс библиотека графики в консоли"
Serhiy_UA
Цитата(krux @ Jun 12 2016, 12:38) *
а какая может быть графика в консольном режиме?
если речь про псевдографику - то посмотрите ncurses

Ищется что-то аналогичное, что изложено по программированию для Windows в статье "Доля П.Г. Введение в C/C++ программирование консоли. Рисование в консольном окне. (PDF, 0.98 Мб, 64 с.)". Там есть скрины рисунков.
Статья на всякий случай прилагается.
Хотел бы найти такие же возможности для рисования в консольном окне и для Linux...

И еще много другого от Доля П.Г., на мой взгляд интересного, есть на http://geometry.karazin.ua/ru/~dolya/documents
Jury093, спасибо, посмотрю.
Lagman
Цитата(Jury093 @ Jun 12 2016, 17:24) *
простейший случай вывода графики (при наличие прав)
Код
cat /dev/urandom > /dev/fb0

Этот пример использует устройства вывода framebuffer и поддержка этого устройство должна быть включена в ядре. Если выводить через фреймбуфер, то многие библиотеки умеют так работать (GTK, QT ...)
krux
Цитата(Serhiy_UA @ Jun 12 2016, 17:26) *
Ищется что-то аналогичное, что изложено по программированию для Windows в статье "Доля П.Г. Введение в C/C++ программирование консоли. Рисование в консольном окне. (PDF, 0.98 Мб, 64 с.)". Там есть скрины рисунков.
Статья на всякий случай прилагается.
Хотел бы найти такие же возможности для рисования в консольном окне и для Linux...

И еще много другого от Доля П.Г., на мой взгляд интересного, есть на http://geometry.karazin.ua/ru/~dolya/documents

глава
Цитата
1.2 Рисование в консольном окне
в этой статье - это вывод графики через Windows GDI, а под виндой это уже не консольный режим.

если нужно писать под X Window System, то стоит посмотреть Cairo: https://www.cairographics.org/
Serhiy_UA
Цитата(krux @ Jun 13 2016, 09:59) *
глава в этой статье - это вывод графики через Windows GDI, а под виндой это уже не консольный режим.
Спасибо, не догадывался о таких тонкостях, хитро придумали... Фотографируют окошко, рисуют в нем, а потом возвращают в консоль.

Цитата(krux @ Jun 13 2016, 09:59) *
если нужно писать под X Window System, то стоит посмотреть Cairo: https://www.cairographics.org/
Посмотрю, но здесь, похоже, аналогичный подход.
smalcom
Цитата
Осваиваю Linux (точнее Free BSD)

Это как уравнять паровоз и пароплан.
Графика в консоли: svgalib, DirectFB.
k155la3
Вывести графику в консольном окне из-под Win мона.
т.е. console-32
main()
{
то что рисует графику, работает с дискрипторами окон, вызовы Win32API
}
Естественно, если консольное окно выведено в виде графического окна-фрейма, а не текстовый 80x25 режим.
Пример этого есть на firststeps.ru.

Для Linux строение оконного приложения сильно похоже на строение виндузного-сишного-Win32 (см. MSDN - шаблоны приложения Win32 на С).
Естественно, вызовы будут не Win32API, а нечто Linux-специфичное, чего я знать не могу.

smalcom
Цитата(k155la3 @ Aug 15 2016, 19:11) *
Вывести графику в консольном окне из-под Win мона.
...
Естественно, если консольное окно выведено в виде графического окна-фрейма, а не текстовый 80x25 режим.
...
Для Linux строение оконного приложения сильно похоже на строение виндузного-сишного-Win32 (см. MSDN - шаблоны приложения Win32 на С).
Естественно, вызовы будут не Win32API, а нечто Linux-специфичное, чего я знать не могу.

Иногда лучше жевать, чем говорить.
jorikdima
Цитата(smalcom @ Aug 16 2016, 05:20) *
Иногда лучше жевать, чем говорить.

beer.gif
Serhiy_UA
Всем откликнувшимся спасибо!
Немного разобрался в возможностях, да и приведенные ссылки на сайты интересны...

Решил для себя во FreeBSD в консольным режиме не применять графику совсем, а графические приложения выполнять с помощью библиотеки Qt, раз она уже на моем компьютере давно имеется. Так получается проще.

k155la3
Цитата(smalcom @ Aug 16 2016, 15:20) *
Иногда лучше жевать, чем говорить.

Абижаете Вы меня, профессор ! sad.gif

Нажмите для просмотра прикрепленного файла
Gorby
Ню-ню. А теперь изобразите то же самое на удаленном текстовом терминале. Под Линуксом, о чем и шла речь.
k155la3
Цитата(Gorby @ Aug 18 2016, 10:54) *
Ню-ню. А теперь изобразите то же самое на удаленном текстовом терминале. Под Линуксом, о чем и шла речь.

Под Linux - да, речь о нем шла. На удаленном - не помню. На текстовом - не помю.
(У меня наверное что-то с памятью. Тут-помню..... )
Т.о. локально, из под графической оболочки, Linux.
позволю себе себя процитировать
Цитата
Естественно, вызовы будут не Win32API, а нечто Linux-специфичное, чего я знать не могу.

В том смысле, что нужно использовать или прямой системный вызов Linux, или вызов графической оболочки.
Win помянул, так как мне попадался пример-проект. По аналогии решается задача и для Linux.
Вы тоже можете что-то предложить, например пример кода для Linux.
(Для винды там 5 строк, для Linux думаю не больше будет).
XVR
Цитата(k155la3 @ Aug 18 2016, 13:33) *
В том смысле, что нужно использовать или прямой системный вызов Linux, или вызов графической оболочки.
Нету у Linux'а аналогичных системных вызовов - реализация консольного режима в Windows и в Linux координально отличаются.
У Windows консольное окно создается самой системой (точнее специальной программой, но это не суть), и является обычным графическим окном для всего остального мира. У Linux консольное окно может быть где угодно и сделано как угодно. И его в виде какого либо графического окна может вообще не быть. Например окно на вот таком дисплее:

k155la3
В смысле что до "Linux-подобия" дискриптора окна в Windows-е добраться нельзя,
т.к. он скрыт за /dev/tty123 и его интерфейсом ?
-----
Спасибо за ответ.

andrew_b
Цитата(XVR @ Aug 18 2016, 17:28) *
координально отличаются
Действительно.
XVR
Цитата(k155la3 @ Aug 18 2016, 18:21) *
В смысле что до "Linux-подобия" дискриптора окна в Windows-е добраться нельзя,
т.к. он скрыт за /dev/tty123 и его интерфейсом ?
В принципе да. 'Терминал' находится по другую сторону /dev/tty, и что именно туда подключено - никому не известно. Даже если не брать такой маргинальный случай, как на картинке rolleyes.gif , то есть гораздо более распространенные случаи, которые реально встречаются - удаленный доступ через всякие telnet, ssh, rsh и пр. Их 'консольные окна' расположены вообще на другой машине, и добраться к ним из программы, которая в них выводит, вообще невозможно физически.

toweroff
bb-offtopic.gif
Цитата(XVR @ Aug 18 2016, 17:28) *
Например окно на вот таком дисплее:

спасибо, прям прослезился от вида ДВК-2М biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.