今天我们的讲解还是参考自DevBean的博客
【非常感谢“豆子”的开源笔记,我已经给了原作者打赏支持,应该算是买了他部分版权。。。】
不过根据项目中大家的需求做一些修改,因为我们将会主要处理图片和视频。
在初步了解Qt绘图相关的基础知识后,我们将开始学习用Qt做一个贪吃蛇小游戏。
不过在开始游戏之前,我们首先要了解Qt中的一个重要框架,叫Graphics View。
Graphics View是一个很常用的框架(贪吃蛇,俄罗斯方块等用Graphics View都是最好的方法...),甚至Linux的KDE桌面视图都是用它编写的。
Graphics View 分为三个部分:元素(item),场景(scene)以及视图(view)。
我们举一个很简单的例子:我们看到森林里有很多树,那么这个森林就是场景(scene),树是元素(item),你的眼睛就是视图(view)。我们可以在场景里种树,也就是把item通过add的方法置于场景,遮阳,在我们的视图(view)里面就会出现一棵树了。而实际上,我们也未必会一直站在同一个地方看树;当我们移动的时候,整个森林(scene)的场景在我们的视图(view)里边变化。而这在程序中对应着二维图的旋转,缩放等功能。
我们来看下面一这个代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QGraphicsScene scene;
scene.addRect(0,0,150,150);
scene.setBackgroundBrush(QBrush(Qt::gray));
QGraphicsView view(&scene);
view.rotate(30);
view.setWindowTitle("Graphics View");
view.resize(200, 200);
view.show();
return a.exec();
}
在这里,我们构建了一个场景(scene)和一个视图(view),同时,我们在视图上做了旋转,那么它输出的结果就是一个旋转的正方形,如下图:
这种方式在OpenGL以及其他三维软件API中也很常用,想想大家完第一视角的游戏(比如‘我的世界’),无非就是建立一个场景(世界),修改场景中的元素(比如盖房子),然后移动视角,遮阳在场景中就能呈现我们的世界。
大家也可以通过以上代码,简单做几个小程序,或者采用简单的形状,通过代码画一幅简单的画。