GtkDrawingArea使用Cairo不';不适用于Windows 7
我在Windows7 64位和Fedora2164位中使用GTK+2.24。我使用Cairo将绘图区域绘制为白色。它在Fedora中工作,但在Windows中不工作。有人知道原因吗 这是我的密码: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,
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的问题,我想最好有一个答案。