C 使用gtk2创建和存储图像?
我在使用gtk2绘制图像时遇到一些问题。我尝试过以下代码:C 使用gtk2创建和存储图像?,c,gtk,gtk2,C,Gtk,Gtk2,我在使用gtk2绘制图像时遇到一些问题。我尝试过以下代码: #include <gtk/gtk.h> static gboolean button_press_callback (GtkWidget *event_box, GdkEventButton *event, gpointer data) { g_print ("Event box clicked at coordinates %f,%f\n", event->x, event->y)
#include <gtk/gtk.h>
static gboolean button_press_callback (GtkWidget *event_box, GdkEventButton *event, gpointer data)
{
g_print ("Event box clicked at coordinates %f,%f\n",
event->x, event->y);
/* Returning TRUE means we handled the event, so the signal
* emission should be stopped (don't call any further
* callbacks that may be connected). Return FALSE
* to continue invoking callbacks.
*/
return TRUE;
}
static GtkWidget*
create_image (void)
{
GtkWidget *image;
GtkWidget *event_box;
image = gtk_image_new_from_file ("image.png");
}
int main(int argc, char const *argv[])
{
create_image();
return 0;
}
它不会在屏幕上画任何图像,事实上我根本看不到任何窗口。另外,在变量中存储图像以备将来使用的最佳方法是什么?我建议您阅读gtk教程,这里显示的代码缺少很多内容,例如如何在窗口中显示简单图片:
#include <gtk/gtk.h>
GtkWidget* create_gui()
{
GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL); // create the application window
GtkWidget *img = gtk_image_new_from_file("image.png"); // image shall be in the same dir
gtk_container_add(GTK_CONTAINER(win), img); // add the image to the window
g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(gtk_main_quit), NULL); // end the application if user close the window
return win;
}
int main(int argc, char** argv) {
GtkWidget* win;
gtk_init(&argc, &argv);
win = create_gui();
gtk_widget_show_all(win); // display the window
gtk_main(); // start the event loop
return 0;
}
顺便说一句,gtk 2不再被维护,我建议您从gtk3开始,如果可以的话它不工作。我收到很多警告。在OnceonLinux上安装两个版本的gtk和gcc可以吗?我没有任何问题,只需确保您的编译标志。对于本例,我使用了gtk2和以下命令行:gcc`pkg config-cflags gtk+-2.0`-o example example.c`pkg config-libs gtk+-2.0`仅当您必须维护旧代码库时才使用gtk+2。GTK+3已于8年前发布,GTK+4即将发布,最有可能于2019年发布。此外,图纸也发生了变化,开罗图书馆是GTK+3的一等公民。