GTK 绘图相关函数

1.回调函数configure_event,创建窗口时调用该函数,创建一块新的PIXMAP。
gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data)
{
    if(pixmap)
        g_object_unref(pixmap);    //Create the new pixmap
    pixmap = gdk_pixmap_new(widget->window,

                                                 widget->allocation.width,

                                                 widget->allocation.height,
                                                 -1);
    //initialize the pixmap  --- no need, default with black
/*--------------------------------------------------------------------------
    gdk_draw_rectangle(pixmap,
               widget->style->white_gc,
               TRUE,
               0, 0,
               widget->allocation.width,
               widget->allocation.height);
-----------------------------------------------------------------------------*/
    return TRUE;
}

 

2.回调函数expose_event,这个函数比较重要,它实现区域的重绘。每次当drawing_area的窗口的某块区域被挡住或者最小化后再重现都会自动调用该函数,对失效区域重画。另外,我们也可以自己调用gdk_window_invalidate_rect()或是gtk_widget_queue_draw_area()等函数来发送一条重绘消息。
gboolean expose_event(GtkWidget *widget,GdkEventExpose *event,gpointer data)
{
    //draw the pixmap onto the drawable
    gdk_draw_drawable(widget->window,
                                      widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                                      pixmap,
                                      event->area.x, event->area.y,
                                      event->area.x, event->area.y,
                                      event->area.width, event->area.height);
    return FALSE;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值