Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用GTK显示一叠卡片所需的帮助!_C_Gtk - Fatal编程技术网

C 使用GTK显示一叠卡片所需的帮助!

C 使用GTK显示一叠卡片所需的帮助!,c,gtk,C,Gtk,嘿,伙计们,我正在制作一个纸牌游戏,它显示一堆纸牌(一些像纸牌的东西)。我想知道你能给我一些建议吗?另外,如果你能告诉我这些东西的教程(我已经阅读了gtk文档)。不幸的是,gtk+中没有显示一叠卡片的小部件,所以你必须自己编写一个。您应该使用GtkDrawingArea(最好通过子类化它),并在expose\u eventsignal的处理程序中进行绘图。要绘制图形,您可以使用更基本的普通GDK,也可以使用更灵活的绘图库Cairo(注意,Cairo由GTK+使用,因此它不是额外的依赖项。如果您想

嘿,伙计们,我正在制作一个纸牌游戏,它显示一堆纸牌(一些像纸牌的东西)。我想知道你能给我一些建议吗?另外,如果你能告诉我这些东西的教程(我已经阅读了gtk文档)。

不幸的是,gtk+中没有显示一叠卡片的小部件,所以你必须自己编写一个。您应该使用GtkDrawingArea(最好通过子类化它),并在
expose\u event
signal的处理程序中进行绘图。要绘制图形,您可以使用更基本的普通GDK,也可以使用更灵活的绘图库Cairo(注意,Cairo由GTK+使用,因此它不是额外的依赖项。如果您想要更多,您甚至可以使用OpenGL(然后您必须使用GtkGlExt库)


有一章专门介绍如何创建自己的小部件。

您应该检查在GnomeGames中已经完成了哪些工作:

看看他们是怎么做到的。似乎他们把每一张牌都呈现出来了: 例如,在Aisleriot源代码中,在game.h中,有一个ArSlot结构的定义,它存储一个插槽中的所有卡。在这里,你可以看到它们定义了“扩展”并集,它只是定义了卡之间的偏移量

如果你想创建一堆卡片,你可以画出它们中的每一个,或者如果你认为它太慢,只需画几张卡片,其中有一个或两个像素的随机偏移,然后在上面画上最后一张卡片:用这个算法,你堆的卡片看起来像堆,而且很快在屏幕上渲染。