3

我在 Linux 下使用 C 和 GTK 编写了一个基本的老虎机模拟。老虎机有 5 个卷轴,每个卷轴有 3 个符号。为了“动画化”旋转动作,我只是使用带有 GtkImages 数组 3,5 的动画 GIF。

我想让它看起来像一个合适的老虎机,每个卷轴都有一个垂直动画。我想我需要从卷轴上的符号构建一个像素图或像素缓冲区,使用 g_timer_add() 来更改 GtkImage 上像素图的可见部分。我是 Gtk+ 的新手,所以如果有人有这类动画的简单示例或良好的文档,我将永远感激不尽。

谢谢你。

4

1 回答 1

1

使用 GtkDrawingArea 而不是 GtkImage,这样您就可以随意绘制。将所有可能的图像放在一个垂直的 PNG 图像中,就像展开卷轴一样。然后将其加载到 pixbuf 中,使用 cairo 为其创建一个表面。您只需要使用 cairo 绘制该大图像的一小部分,您可以通过该大图像的垂直偏移量来引用它。使用带有 g_timer_add 的计时器,使其以每秒足够的帧数刷新(计算您需要的速度)。不要认为定时器回调是理所当然的,回调的触发可能会有延迟。最好的方法是使用 GTimer,在您想要使卷轴旋转的时间启动它,并在 g_timer_add 回调中,测量自启动 GTimer 以来经过的时间。这将允许您计算图像的偏移量。

于 2012-04-23T12:34:02.473 回答