私は数値計算のためにはCがとても快適ですが、グラフィカルプログラミングには向いていません。私は、Linux(gcc、ubuntu)用のコマンドラインプログラムで3 RGBマトリクスでNy by Nyを持っており、画像としてウィンドウをポップアップしたい。これを行う最も簡単な方法は何ですか?イメージを頻繁に更新するので比較的速くなければなりません。C/Linuxで画像を表示する最も簡単な方法は何ですか?
おかげ
私は数値計算のためにはCがとても快適ですが、グラフィカルプログラミングには向いていません。私は、Linux(gcc、ubuntu)用のコマンドラインプログラムで3 RGBマトリクスでNy by Nyを持っており、画像としてウィンドウをポップアップしたい。これを行う最も簡単な方法は何ですか?イメージを頻繁に更新するので比較的速くなければなりません。C/Linuxで画像を表示する最も簡単な方法は何ですか?
おかげ
は、ピックスマップに画像を描画Xウィンドウを作成(またはフレームバッファを割り当て)、およびウィンドウにピックスマップを書き込みます。
またはImageMagickのdisplay
コマンドの実装を見てください。
あなたがGTK +を習得しても大丈夫なら、それは最も簡単な方法かもしれません。ウィンドウとドロウアブルを作成し、ドロウアブルをウィンドウの子にします。イメージのピクスマップを作成し、ドロウアブルに描画します。カイロはこれを単純化します。イメージフォーマットを調整するだけでよいからです。
C言語自体には、グラフィックス機能が組み込まれていません。 Qt、gtk、wxWidgetsなどのグラフィックスツールキットを使用することもできます。イメージファイル(BMP is pretty simple)を作成し、アプリケーションを起動して(forkとexecを使用して)アプリケーションを表示することもできます。 Ubuntuはデフォルトでgnomeを使用しています。作成したファイルの名前であるコマンドライン引数で "gnome-open"をforkし、gnome-openはそのファイルタイプに関連付けられているアプリケーションを起動します。
科学的な計算をしていて、結果を表示するための簡単な方法が必要なようです。
gnuplotのようなものは、一般的なウィンドウツールキットの学習よりも優れた走行距離を提供します。それは一般的なプロットユーティリティであり、特にデータセットの表示に適しています。
イメージmagickを試してみると、最小限の作業でxウィンドウにイメージを表示する機能があるようです。私は過去にイメージマジックを使用しており、それに満足しています。私はこの特定の機能を試していません。ここで
Seconded。 ImageMagickはおそらくCからこれを行う最も簡単な方法です。 – Benson
あなたはGtk2サイト上(tutorialを含む)より多くの情報を見つけることができますどのように表示し、画像のGtk2でC.を使用しています。ここで
#include <gtk/gtk.h>
void destroy(void) {
gtk_main_quit();
}
int main (int argc, char** argv) {
GtkWidget* window;
GtkWidget* image;
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
image = gtk_image_new_from_file(argv[1]);
gtk_signal_connect(GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_add(GTK_CONTAINER (window), image);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
はそれをコンパイルする方法です:
gcc -Wall img.c -o img `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
カイログラフィックスライブラリも行くには良い方法である、http://cairographics.org/を参照してください。クロスプラットフォームであり、かなり効率的で、Gnome/KDE/Windowsで作業したり、イメージファイルをかなり簡単に生成することができます。ベクトル用に設計されているので、クリッピングやフォント、スケーリングもうまく処理できます。
初心者の方はGTKよりもQtがおそらく簡単です... C++で書かれていますが、Cバインディングがあると思います。 –