2012-04-22 22 views
3

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

我真的希望它看起来像一个适当的老虎机,其中每个卷轴都进行垂直动画。我会想象我需要从卷轴上的符号构建像素图或pixbuf,使用g_timer_add()更改GtkImage上像素图的可见部分。我是Gtk +的新手,所以如果有人有这种类型的动画或优秀文档的简单例子,我会永远感激。

谢谢。

+0

我想你可能更适合使用游戏编程工具包... – ptomato 2012-04-23 11:47:11

回答

1

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

+0

感谢您的详细和有益的回应。 – Chimera 2012-04-23 19:45:52

+0

顺便说一句,要绘制一个GtkDrawingArea,看一下配置事件来跟踪小部件大小的变化,以及“揭发事件”(对于GTK2)或“绘制”事件(对于GTK3)来处理绘图。 – liberforce 2012-04-25 11:11:29