Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GtkDrawingArea使用Cairo不';不适用于Windows 7_Gtk_Cairo_Gtk2 - Fatal编程技术网

GtkDrawingArea使用Cairo不';不适用于Windows 7

GtkDrawingArea使用Cairo不';不适用于Windows 7,gtk,cairo,gtk2,Gtk,Cairo,Gtk2,我在Windows7 64位和Fedora2164位中使用GTK+2.24。我使用Cairo将绘图区域绘制为白色。它在Fedora中工作,但在Windows中不工作。有人知道原因吗 这是我的密码: static gboolean draw_background_cb(GtkWidget *widget _U_, cairo_t *cr, gpointer data _U_) { /* Set background color */ cairo_set_source_rgb(cr,

我在Windows7 64位和Fedora2164位中使用GTK+2.24。我使用Cairo将绘图区域绘制为白色。它在Fedora中工作,但在Windows中不工作。有人知道原因吗

这是我的密码:

static gboolean draw_background_cb(GtkWidget *widget _U_, cairo_t *cr, gpointer data _U_)
{
    /* Set background color */
    cairo_set_source_rgb(cr, 1, 1, 1);
    cairo_rectangle(cr, 0, 0, 300, 300);
    cairo_paint(cr);
    return FALSE;
}

int main(int argc, char *argv[])
{
    GtkWidget *window;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    g_signal_connect(window, "draw", G_CALLBACK (draw_background), NULL);

    gtk_widget_show(window);

    gtk_main();

    return 0;
}

GTK+2使用
expose event
而不是
draw
进行绘图。我不知道其他的区别是什么;抱歉。

您能在某处上传一个最小的可测试示例程序吗?这个使用GtkDrawingArea的程序怎么样?您尝试直接在GtkWindow上绘制(这仍然有效,但与您的问题标题不匹配)。如果您使用的是
“draw”
信号,那么您使用的是GTK+3,而不是GTK+2。如果您是从教程中获得此信息的,您需要找到GTK+2教程来代替,或者升级到GTK+3。@andlabs感谢您的评论。我发现GTK+2使用的不是“draw”而是“expose event”,而且它很有效。非常感谢,,@andlabs,你介意发布一个答案吗?既然它解决了OP的问题,我想最好有一个答案。