• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            清源游民 gameogre@gmail.com

            Graphics View 坐標(biāo)系統(tǒng)
            Graphics View基于笛卡爾坐標(biāo)系。item在場景中的位置與幾何形狀通過x,y坐標(biāo)表示。當(dāng)使用未經(jīng)變形的視圖來觀察場景時(shí),場景中的一個(gè)單位等于屏幕上的一個(gè)像素。在Graphics View中有三個(gè)有效的坐標(biāo)系統(tǒng):Item坐標(biāo)系,場景坐標(biāo)系,視圖坐標(biāo)系。為了簡化你的實(shí)現(xiàn),Graphics View提供了方便的函數(shù),允許三個(gè)坐標(biāo)系之間相互映射。
            當(dāng)渲染時(shí),Graphics View的場景坐標(biāo)對應(yīng)于QPainter的邏輯坐標(biāo),視圖坐標(biāo)與設(shè)備坐標(biāo)相同。



            Item坐標(biāo)
            Items位于它們自己的坐標(biāo)系中。它的坐標(biāo)都以點(diǎn)(0,0)為中心點(diǎn),這也是所有變換的中心點(diǎn)。在item坐標(biāo)系中的幾何圖元,經(jīng)常被稱為item點(diǎn),item線,item矩形。當(dāng)創(chuàng)建一個(gè)定制的item,item坐標(biāo)是所需要考慮的。QGraphicsSceneQGraphicsView可以為你執(zhí)行所有轉(zhuǎn)換,這使得實(shí)現(xiàn)定制的item變得容易。舉例來說,假如你收到鼠標(biāo)按或是拖進(jìn)入事件,事件的位置以item坐標(biāo)的形式給出。QGraphicsItem::contain()虛函數(shù),當(dāng)某個(gè)點(diǎn)的位置在你的item范圍內(nèi)時(shí),返回true,否則返回false。這個(gè)點(diǎn)參數(shù)使用item坐標(biāo),相似地,item的包圍矩形與形狀也使用item坐標(biāo)。
            Item位置指的是item的中心點(diǎn)在它父親的坐標(biāo)系中的坐標(biāo)。以這種思想來看,場景指的就是那些祖先最少的item的“父親”。最上級的Item位置就是在場景中的位置。
            子坐標(biāo)與父坐標(biāo)之間是相關(guān)的,假如孩子未經(jīng)變換,子坐標(biāo)與父坐標(biāo)之間的差值等于在父坐標(biāo)系下,父item與子item之間的距離。例如,假如一個(gè)未經(jīng)變換的子item位置與其父item的中心重合,那么這兩個(gè)item的坐標(biāo)系統(tǒng)完全相同。如果孩子的位置是(10,0),那么孩子坐標(biāo)系中的(0,10)點(diǎn),對應(yīng)于父坐標(biāo)系中的(10,10)點(diǎn)。
            因?yàn)閕tem的位置與變換是相對于父item的,子item的坐標(biāo)不會被父親的變換影響,盡管父item的變換隱含地對子item做了變換。在上面的例子中,即使父item旋轉(zhuǎn),縮放,子item的(0,10)點(diǎn)依然對應(yīng)于父item的(10,10)點(diǎn)。然而,相對于場景來講,子item會遵循父item的變換。假如父item被縮放(2X,2X),子item的位置在場景中的坐標(biāo)是(20,0),它的(10,0)點(diǎn)則與場景中的(40,0)對應(yīng) 。除了QGraphicsItem::pos(),QGraphicsItem的函數(shù)以Item坐標(biāo)工作,如一個(gè)item's包圍矩形總是以item坐標(biāo)的形式給出。

            場景坐標(biāo)
            場景坐標(biāo)系統(tǒng)描述了每個(gè)最頂級item的位置,也是從視圖向場景投遞場景事件的基礎(chǔ)。場景中的每個(gè)item有場景位置與包圍矩形(QGraphicsItem::scenePos(),QGraphicsItem::sceneBoundingRect()), 另外,它有自己本地item位置與包圍矩形。場景位置描述了item在場景坐標(biāo)下的位置,它的場景包圍矩形則用于QGraphicsScene決定場景中哪塊區(qū)域發(fā)生了變化。場景中的變化通過QGraphicsScene::changed()信號來通知,它的參數(shù)是場景矩形列表。

            視圖坐標(biāo)
            視圖坐標(biāo)是widget的坐標(biāo),視圖坐標(biāo)中每個(gè)單位對應(yīng)一個(gè)像素。這種坐標(biāo)的特殊之處在于它是相對于widget或是視口的,不會被所觀察的場景所影響。QGraphicsView的視口的左上角總是(0,0),右下角總是(視口寬,視口高)。所有的鼠標(biāo)事件與拖拽事件,最初以視圖坐標(biāo)表示,就應(yīng)該把這些坐標(biāo)映射到場景坐標(biāo)以便與item交互。

            坐標(biāo)映射
            經(jīng)常,處理場景中item時(shí),在場景與item之間,item與item之間,視圖與場景之間進(jìn)行坐標(biāo)映射,形狀映射是非常有用的。舉例來講,當(dāng)你在QGraphicsView的視口中點(diǎn)擊鼠標(biāo)時(shí),你應(yīng)該通過調(diào)用QGraphicsView::mapToScence()QGraphicsScene::itemAt()來獲知光標(biāo)下是場景中的哪個(gè)item。假如你想獲知一個(gè)item位于視口中的什么位置,你應(yīng)該先在item上調(diào)用QGraphicsItem::mapToScene(),然后調(diào)用QGraphicsView::mapFromScene()。最后,假如你想在一個(gè)視圖橢圓中有哪些items,你應(yīng)該把QPainterPath傳遞到mapToScene(),然后再把映射后的路徑傳遞到QGraphicsScene::items()。
            你可以調(diào)用QGraphicsItem::mapToScene()QGraphicsItem::mapFromScene()在item與場景之間進(jìn)行坐標(biāo)與形狀的映射。也可以在item與其父item之間通過QGraphicsItem::mapToParent()QGraphicsItem::mapFromItem()進(jìn)行映射。所有映射函數(shù)可以包括點(diǎn),矩形,多邊形,路徑。視圖與場景之間的映射也與此類似。對于從視圖與item之間的映射,你應(yīng)該首先映射到場景,然后再從場景向item進(jìn)行映射。

            posted on 2007-09-26 23:57 清源游民 閱讀(4693) 評論(0)  編輯 收藏 引用 所屬分類: Qt
            <2009年10月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产精品综合久久网络| 久久国产乱子伦精品免费午夜| 亚洲国产另类久久久精品| 久久久精品人妻一区二区三区蜜桃| 日产精品久久久久久久| 一本久久a久久精品综合夜夜 | 一本一道久久a久久精品综合| 无码精品久久久天天影视| 亚洲国产精品人久久| 亚洲精品乱码久久久久久| 国产精品伊人久久伊人电影| 亚洲中文字幕无码久久精品1| 久久精品无码一区二区三区免费| 婷婷久久久亚洲欧洲日产国码AV | 亚洲va中文字幕无码久久| 99久久国产亚洲高清观看2024 | 麻豆一区二区99久久久久| 久久久久亚洲AV无码去区首| 国产精品久久影院| 亚洲中文久久精品无码| 性高朝久久久久久久久久| 久久亚洲欧美日本精品| 久久AV高清无码| 老男人久久青草av高清| 久久久噜噜噜久久| 91精品国产91久久久久久| 国产精品久久成人影院| 色8久久人人97超碰香蕉987| 无码人妻久久一区二区三区蜜桃| 久久久久香蕉视频| 国产成人精品久久亚洲高清不卡| 精品久久久久久久| 东京热TOKYO综合久久精品| 亚洲国产精品无码久久久不卡| 亚洲天堂久久久| 99久久国产亚洲综合精品| 久久99九九国产免费看小说| 亚洲欧美精品一区久久中文字幕 | 久久天天躁狠狠躁夜夜网站| 无码专区久久综合久中文字幕| 亚洲av日韩精品久久久久久a|