- 论坛徽章:
- 0
|
在configure_event事件里,网上都是这样写的:
gboolean on_scribble_configure_event(GtkWidget *widget , GdkEventConfigure *event,gpointer data)
{
if (pixmap)
g_object_unref (G_OBJECT(pixmap));
pixmap = gdk_pixmap_new(widget->window ,
widget->allocation.width ,
widget->allocation.height ,
-1);
gdk_draw_rectangle(pixmap , widget->style->white_gc ,
TRUE , 0 , 0 ,
widget->allocation.width ,
widget->allocation.height);
return FALSE;
}
这样就会有个问题,只要窗口尺寸改变,最大化或者拖放窗口,都会新建一个以当前窗口尺寸为宽高的pixmap,并且在上面画了一个空白矩阵。也就是说,原来画的东西都被清除了。
于是,我就把:
if (pixmap)
g_object_unref (G_OBJECT(pixmap));
改成了:
if (pixmap)
return FALSE;
这样问题就变成了,窗口尺寸改变后,drawingarea区域只能显示原始窗口大小的pixmap(即创建窗口时,创建的pixmap大小),而其他区域都是灰的,不能绘图。
不知道这样说大家能不能明白,这个问题实在是困扰了我很多天,一直没有进展。希望哪位知道的一定要告诉我啊,先谢谢了! |
|