huyanpeng 发表于 2012-2-23 15:46:09

想用gtk做图像处理 但是又不想显示窗口

我的需求是这样的:
在linux下,我要实现这么一个功能:创建一个画布,然后在画布上画线或打字,最后把画布的每个像素取出来。但是整个过程不能让窗口显示出来。


如下是我写的程序:
#include <gtk/gtk.h>   
gboolean on_darea_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);

int main (int argc, char *argv[])   
{   
GtkWidget *window;   
gtk_init (&argc, &argv);   
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);   
g_signal_connect (GTK_OBJECT (window), "expose-event",   
GTK_SIGNAL_FUNC (on_darea_expose), NULL);   
gtk_widget_show_all (window);   
gtk_main ();   
return 0;   
}   

gboolean on_darea_expose (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)   
{   
GdkGC *gc = gdk_gc_new(GDK_DRAWABLE(widget->window));
GdkColor color;   
gdk_color_parse("darkred", &color);   
gdk_gc_set_foreground(gc, &color);   
gdk_draw_line((widget->window), gc, 10, 10,50,50);   
return TRUE;   
}   


这样确实是可以画出线来(取像素暂时先不管),但是窗口显示出来了。
倘若要窗口不显示出来怎么办?给实例源码马上给分! (不要说显示再隐藏哦,我要的是干脆不显示)

ACTom 发表于 2012-2-23 16:32:10

gtk_widget_show_all (window);
这行删了就好。。。

huyanpeng 发表于 2012-2-24 08:57:41

求高手出马! 在线等

ACTom 发表于 2012-3-2 22:51:38

你只要画啊,不需要显示出来,直接调用那个函数不就可以了?

int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
on_darea_expose (window, NULL, NULL) ;
/* write what do you want to save */
gtk_main ();
return 0;
}

uasoft 发表于 2012-3-16 19:37:21

把GTK_WINDOW_TOPLEVEL改为GTK_WINDOW_POPUP,这样可以去掉窗口管理

内容来自[手机版]
页: [1]
查看完整版本: 想用gtk做图像处理 但是又不想显示窗口