直到现在,我还使用字符在终端中绘制图像,形状等。
可以画一个像素吗?
比方说:
foo 1 1 red
这将在坐标处绘制一个红色像素(1, 1)
。
是否有现有的应用程序可以完成这项工作?
当前正在运行Ubuntu 14.04。
DEC GT40
是有用的,但是太贵了... :-)
直到现在,我还使用字符在终端中绘制图像,形状等。
可以画一个像素吗?
比方说:
foo 1 1 red
这将在坐标处绘制一个红色像素(1, 1)
。
是否有现有的应用程序可以完成这项工作?
当前正在运行Ubuntu 14.04。
DEC GT40
是有用的,但是太贵了... :-)
Answers:
终端是字符单元显示,不支持绘制像素图形。即使在X11中运行也不行;尽管直接与X服务器对话时当然可以绘制单个像素,但是如果您的程序正在与终端对话,则只能要求终端显示字符。
要显示图形而不是文本,您需要编写一个与X服务器直接交互的程序。通常通过UI工具箱库(例如GTK,Qt或wxWidgets)完成此操作。
xterm
或的图像嵌入terminology
)。注意,终端也指X11终端(的东西,如那些泰克接班人)
除非您可以执行Wyzard提到的内容,自己进行编程或找到已经为该工作使用的工具(这可能是特定于终端的),否则您将无法在终端中绘制单个像素的颜色。但是,可以在终端中使用单个字符坐标来绘制使用ASCII和UTF-8字符的2D图像。用于此的工具称为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
除了Wyzard的答案中提到的主要窗口小部件工具箱(GTK,Qt,WxWidgets)之外,您还可以考虑使用更多面向媒体的库,例如SFML或libSDL。如果只需要一些图形输出(几乎没有交互),甚至可以考虑使用CairoGraphics。
在某些情况下,您可以通过管道(例如popen)或在命令行上使用命令实用程序(如GNUplot或GraphViz)使用。
您还可以考虑使用浏览器的图形功能,例如,通过编码一些专用的Web应用程序(使用Wt或libonion等HTTP服务器库,以及AJAX,SVG,HTML5,canvas,websockets等Web技术)。
但是大多数终端仿真器没有或只有很少的图形功能(因此没有真正的像素图形)。因此,您实际上需要程序与显示服务器(X11,Wayland等)进行交互。