Graphics View支持几种级别的动画。你可以很容易地通过把QGraphicsItemAnimatoin与你的item联结来装配出动画路径,这允许以时间线来控制动画,在所有平台上以稳定的速率运作。QGraphicsItemAnimation允许你为item的位置,旋转,缩放,剪切,变换等产生一条路径,动画可以用QSlider来控制,或更为普遍使用的QTimeLine。另一种是从QObject和QGraphicsItem继承,item可以设置自己的定时器,以在QObject::timeEvent()中增加步进的方式来控制动画。第三种,是通过调用QGraphicsScene::advance()来推进场景,它又依次调用QGraphicsItem::advance().
OpenGL渲染
为了使用OpenGL渲染,你要设置一个新的QGLWidget作为QGraphicsView的视口:QGraphicsView::setViewPort()。假如你让OpenGL提供反锯齿功能,你需要OpenGL采样缓冲支持。
QGraphicsView view(&scene);
view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
Iterm组
通过把一个item做为另一个item的孩子,你可以得到item组的大多数本质特性:这些items会一起移动,所有变换会从父到子传递。QGraphicsItem也可以为它的孩子处理所有的事件,这样就允许以父亲代表它所有的孩子,可以有效地把所有的items看作一个整体。
另外,QGraphicsItemGroup是一个特殊的item,它既对孩子事件进行处理又有一个接口把items从一个组中增加和删除。把一个item加到
QGraphicsItemGroup仍会保留item的原始位置与变换,而给一个item重新指定父item则会让item根据其新的父亲重新定位。可以用QGraphicsScene::createItemGroup()建组。
4.1.2实现原理
1. 首先用QgraphicsScene类建立一个场景
2. 对数组进行历遍,对每一个字符进行解释和建模
(1)一个13×13的二文字符数组,每个字符用一个点表示,其中每一个点水平和垂直的间距都指定一个大小用width表示,其表示的点矩阵如下:
图4-2 点矩图原文请加优.文^论,文'网QQ3249,114
(2)建屋子的墙主要是利用了Graphics View 提供的矩形(QGraphicsRectItem)来绘制而成,当读到的字符不为空格字符时,就会绘制四个矩形从而形成一个正方体。例如:字符在点矩阵中的坐标为(X,Y)用A点表示,以坐标(X,Y)(X+1,Y)(X,Y+1)(X+1,Y+1)两两坐标间画一个矩形,从而形成一个封闭的矩形。对每一个字符进行同样解释,就得到了房子的模型了,如右下图所示:
图4-3 建模原理图
由于建成的模型后,是在室内走动的,所以可把模型等作如下效果:
图4-4 模型等效图
(3)对模型的矩形操作,不同的字符代表着对矩形进行贴图、添加网站或开发软件。对每一个字符所画的四个矩形都是同样操作,所以为了能对模型墙的两边能贴上不同的图片,所以把真正的建模二文数组得改成如下,建出的模型和上画的图大体相同: 毕业论文
http://www.youerw.com/ 其中在建模函数中使用关联容器QMap,把字符与数字对应起来,实现了从字符转换成数字,方便了历遍。其中各种字符代表意义如下:
方块游戏: k
地图网站: @ g |
视频播放器: =
图片浏览器: * {
网页浏览器: % ^ w x
注:其他的字符是代表不同的图片
在建模整个过程中,当我们绘出矩形(QGraphicsRectItem)后,就可以任意的将任何Qt的Qwidget放入其中,不论是简单的button,还是复杂的软件,甚至是另外一个GrahpicView。这时在这个三文空间中行走时,就会发现所有的widget都可以随着你的移动自动改变视角,而不需要自己去一个个处理,GrahpicView可以自动处理这些变换。另外还可以在其中使用一些三文模型,使用OpenGL渲染它们。
上一页 [1] [2] [3] [4] [5] [6] [7] [8]
OpenGL三文数码媒体屋设计 第8页下载如图片无法显示或论文不完整,请联系qq752018766