如何在终端中绘制单个像素?


10

直到现在,我还使用字符在终端中绘制图像,形状等。

可以画一个像素吗?

比方说:

foo 1 1 red

这将在坐标处绘制一个红色像素(1, 1)

是否有现有的应用程序可以完成这项工作?

当前正在运行Ubuntu 14.04。


3
您拥有哪种终端机?一个DEC GT40
Anthon

@Anthon Gnome终端(附带的Ubuntu)
尼卡比曹

1
@Anthon一个DEC GT40是有用的,但是太贵了... :-)
尼卡比曹

1
@terdon我投票决定重新开放,因为这本质上不是编程问题(我确实删除了cc ++标记,因为如果您要编写C或C ++代码,那么这里就没话题了)。“这里没有这样的功能,您需要对其进行编程”将是一个正确的答案-除非它是错误的:一个好的答案将提到Tektronix并像w3m一样绘制终端窗口。
吉尔(Gilles)'所以

1
@吉尔斯很公平,我已经重新开放。我关闭了它,因为它正在迁移到SO中,因此不受欢迎。
terdon

Answers:


10

终端是字符单元显示,不支持绘制像素图形。即使在X11中运行也不行;尽管直接与X服务器对话时当然可以绘制单个像素,但是如果您的程序正在与终端对话,则只能要求终端显示字符。

要显示图形而不是文本,您需要编写一个与X服务器直接交互的程序。通常通过UI工具箱库(例如GTKQtwxWidgets)完成此操作


7
终端种类繁多,其中一些具有图形功能(例如的Tektronix模式xterm或的图像嵌入terminology)。注意,终端也指X11终端(的东西,如那些泰克接班人)
斯特凡Chazelas

2
凉!一些爱好者在xterm中绘制3d茶壶=)dim13.org/2009/02/teapot
gena2x 2014年

如果终端只能“绘制”字符,则应该将像素设为字符,以便可以绘制...

10

看一下Drawille库。它使用UTF盲文字符绘制像素。


1
尽管从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
slm

1

除非您可以执行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

1

除了Wyzard的答案中提到的主要窗口小部件工具箱(GTK,Qt,WxWidgets)之外,您还可以考虑使用更多面向媒体的库,例如SFMLlibSDL。如果只需要一些图形输出(几乎没有交互),甚至可以考虑使用CairoGraphics

在某些情况下,您可以通过管道(例如popen)或在命令行上使用命令实用程序(如GNUplotGraphViz)使用

您还可以考虑使用浏览器的图形功能,例如,通过编码一些专用的Web应用程序(使用Wtlibonion等HTTP服务器库,以及AJAX,SVG,HTML5,canvas,websockets等Web技术)。

但是大多数终端仿真器没有或只有很少的图形功能(因此没有真正的像素图形)。因此,您实际上需要程序与显示服务器X11Wayland等)进行交互。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.