web-dev-qa-db-ja.com

端末で単一のピクセルを描画する方法は?

これまでは、端末で画像や図形などを文字で描きました。

単一のピクセルを描くことは可能ですか?

まあ言ってみれば:

foo 1 1 red

これにより、座標(1, 1)に赤いピクセルが描画されます。

この仕事をする既存のアプリケーションはありますか?

現在Ubuntu 14.04を実行しています。

10
Ionică Bizău

端末は 文字セル表示 であり、ピクセルグラフィックスの描画をサポートしていません。 X11で実行している場合でも同様です。 Xサーバーと直接通信するときに個々のピクセルを描画することは確かに可能ですが、プログラムが端末と通信している場合は、端末に文字の表示を要求することしかできません。

テキストではなくグラフィックを表示するには、Xサーバーと直接対話するプログラムを作成する必要があります。これは通常、 [〜#〜] gtk [〜#〜]Qt 、または wxWidgets などのUIツールキットライブラリを介して行われます。

10
Wyzard

Drawilleライブラリ をご覧ください。 UTF点字を使用してピクセルを描画します。

10
mipmip

何ができるか Wyzard's について言及するか、自分でプログラムするか、ジョブ用に既に作成されているツールを見つけることができない限り、ターミナルで単一のピクセルカラーを描画することはできません(これはターミナル固有の可能性があります)。 。ただし、端末で個々の文字座標を使用して、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
Yokai

Wyzardの回答 で言及されている主要なウィジェットツールキット(GTK、Qt、WxWidgets)に加えて、 [〜#〜 ] sfml [〜#〜] または libSDL 。 (ほとんど相互作用がない)グラフィカル出力が必要なだけの場合は、 CairoGraphics を検討することもできます。

場合によっては、パイプを介して(たとえば popen )またはコマンドラインで GNUplot または GraphViz

また、ブラウザのグラフィック機能の使用を検討することもできます。 AJAX、SVG、HTML5などのWebテクノロジーを使用して、( Wt または libonion などのHTTPサーバーライブラリを使用して)専用のWebアプリケーションをコーディングする、キャンバス、ウェブソケットなど...)

しかし、ほとんどのターミナルエミュレータにはグラフィック機能がないか、またはほとんどありません(したがって、本物のピクセルグラフィックはありません)。したがって、 display serverX11Wayland 、...)。