原文介绍可见这里。
这篇介绍一个很好玩的窗口,一个可以进行绘图的窗口。换句话说,可以做一个简单的绘图软件。
效果见下面的动画:
虽然很粗糙,不过,做出这么个简单的绘图窗口算是很有成就感了吧。
关于代码:
不过代码也是比较长的,我将原文中的代码分成了两部分,即头文件mygtk.h和源程序main.c。
mygtk.h:
#ifndef MYGTK_H_INCLUDED
#define MYGTK_H_INCLUDED
/* 建立一个surface(我翻译为“表面”),用于存储当前的涂鸦*/
static cairo_surface_t *surface = NULL;
/* 摘自cairo.h,A cairo_surface_t represents an image, either as the destination
* of a drawing operation or as source when drawing onto another
* surface. To draw to a #cairo_surface_t, create a cairo context
* with the surface as the target, using cairo_create().*/
/* 将 surface 初始化为白色*/
static void clear_surface (void)
{
cairo_t *cr;
cr = cairo_create (surface);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_paint (cr);
cairo_destroy (cr);
}
/* 创造一个新的、大小适当的 surface 去存储我们的涂鸦 */
static gboolean configure_event_cb (GtkWidget *widget,
GdkEventConfigure *event,
gpoi