文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在gtk中利用cairo实现动画

在gtk中利用cairo实现动画

时间:2009-06-08  来源:loughsky

我们在gtk中,利用cairo实现动画,往往是这样实现的。 cairo_surface_t *image;
gboolean timer = TRUE;

static gboolean
on_expose_event(GtkWidget *widget,
    GdkEventExpose *event,
    gpointer data)
{
  cairo_t *cr;

  cr = gdk_cairo_create(widget->window);

  .....

  cairo_destroy(cr);

  return FALSE;
}

static gboolean
time_handler (GtkWidget *widget)
{
  if (widget->window == NULL) return FALSE;

  if (!timer) return FALSE;

  gtk_widget_queue_draw(widget);
  return TRUE;
}
根据我的测试发现,这种方法实现动画,会导致gtk窗口自身的刷新,从而更新了很多不必要的地方,造成性能低下。
  这里,我推荐采用另外一种方法,在gtk窗口中使用cairo实现动画。 http://cairographics.org/threaded_animation_with_cairo/   其先用cairo写到pixmap上,然后使用gdk_draw_drawable更新窗口,可以借鉴。
相关阅读 更多 +
排行榜 更多 +
飞艇大战

飞艇大战

飞行射击 下载
三维空间战斗机

三维空间战斗机

飞行射击 下载
战斗机教练

战斗机教练

飞行射击 下载