我对C进行数值计算很满意,但不适合图形编程。我在Linux(gcc,ubuntu)的命令行程序中有一个Nx by Ny by 3 RGB矩阵,我想用它弹出一个窗口作为图像。最简单的方法是什么?它必须相对较快,因为我会经常更新图像。
由于
答案 0 :(得分:6)
以下是如何使用C在Gtk2上显示和图像。您可以在tutorial网站上找到更多信息(包括Gtk2)。
#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`
答案 1 :(得分:2)
您可以尝试使用图像magick它似乎有一个功能,用最少量的工作将图像显示到x窗口。我过去曾使用过magick图像并对它感到满意。我没有尝试过这个特定的功能。
答案 2 :(得分:1)
C语言本身没有任何内置图形功能。您可以使用Qt,gtk,wxWidgets等图形工具包。您还可以构建一个图像文件(BMP is pretty simple),然后启动(使用fork和exec)应用程序来查看它。 Ubuntu默认使用gnome,您可以使用命令行参数分叉“gnome-open”,该参数是您创建的文件的名称,然后gnome-open将启动与文件类型相关联的任何应用程序。
答案 3 :(得分:1)
听起来好像你正在做一些科学计算,只需要快速显示结果。
像gnuplot之类的东西可能会比学习通用窗口工具包更有用。它是一个通用的绘图实用程序,专门用于显示数据集。
答案 4 :(得分:0)
将图像绘制到像素图,创建X窗口(或分配帧缓冲区),并将像素图写入窗口。
或者,看看ImageMagick的display
命令的实现。
如果您不介意学习GTK +,那么这可能是最直接的方式。创建一个窗口和一个drawable,并使drawable成为窗口的子项。创建图像的像素图并将其绘制到drawable。开罗将简化这一过程,因为您只需调整图像格式即可使其正常工作。
答案 5 :(得分:0)
cairo图形库也是一种很好的方法,请参阅http://cairographics.org/。它是跨平台的,相当高效,可以让你使用Gnome / KDE / Windows或只是简单地生成图像文件。它专为矢量而设计,因此也能很好地处理剪辑,字体和缩放。