很久很久以前

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            34 隨筆 :: 4 文章 :: 17 評論 :: 0 Trackbacks
          Draw2D學(xué)習(xí)
          Draw2D is a lightweight system.輕量級系統(tǒng),指這個繪圖系統(tǒng)全部建立在一個重量級的控件上。對于Draw2D他是建立在SWT的Canvas上的。
          Draw2D的幾個部分
          1.figures
          主要功能:
             1。給一個figure注冊和去注冊監(jiān)聽器。這個figure會通知在這個figure中的鼠標時間給監(jiān)聽器。
             2。結(jié)構(gòu)化的事件。比如figure層次的結(jié)構(gòu)化變化,figure的移動和大小調(diào)整。
             3。當光標從figure上移過時,光標的改變和顯示。
             4。在figure的層次中操作figure的位置,包括添加移除訪問子節(jié)點,或者訪問他們的父節(jié)點。
             5。存?。篺igure的layout manager;figure的size和location;還有tooltips。
             6。設(shè)置獲得焦點。
             7。設(shè)置figure的透明度和可視性。
             8。進行坐標變換,figure的交疊和碰撞檢測。
             9。繪制。
             10。確認。
          figure有很多subclass,提供了很多附加的功能。比如
            1。shape,它包含了非矩形的figure,可以知道如何填充,并提供了對邊界的寬和類型的配置,并提供了異或的繪制方法。比如有橢圓,幾何線,多邊形,矩形,圓角矩形和三角形。
            2。widget,draw2d包含的figure允許你創(chuàng)建輕量級(lightweight)的部件(widget),從而在你的draw2d應(yīng)用程序中需要輸入控制時提供支持。這包含大量的按鈕,選擇框和文本圖形,標簽。
            3。layer and pane,這些使用來作為子類的容器,他們提供了縮放,滾動和講figure放置在不同layer上的能力。
          圖形上下文(the graphics context)
            當一個figuer需要被繪制的時候輕量系統(tǒng)會調(diào)用fiuger的一個paint方法。每一個figure都會得到一個graphical context,他是Graphics的一個實例。作為參數(shù)傳給paint方法。這個繪圖上下文支持圖形操作包括繪制,填充圖形繪制它的文字。它也提供了圖形的狀態(tài),這些可以影響圖形操作。這些狀態(tài)包括當前字體,背景前景顏色等等。
          2.LightweightSystem
          LightweightSystem時draw2d的核心。它提供了SWT Canvas控件和在其上建立的draw2d系統(tǒng)之間的映射。包含三個方面:
            1。the root figure.這個是LightweightSystem$RootFigure類的一個實例。這個是用戶的root figure的父類。它繼承了一些基于SWT Canvas的圖形環(huán)境,比如字體,前景背景顏色。
            2。the event dispatcher:SWTEventDispatcher類將SWT事件傳給Draw2D的root figure中相應(yīng)的部件。
            3。the update manager.它負責繪制并更新Draw2dfigure。當一個繪制請求從下層的SWTcanvas傳來時,LightWeightSystem將會調(diào)用updatemanager中的performUpdate方法。update manager將會維護一個非法的或者需要重畫的figure的worklist。upate manager會設(shè)法盡量連續(xù)的它的work list,這樣可以盡量的提高效率。默認的update manager:DaferredUpdateManager允許通過再Display上的用戶線程來使工作隊列異步的更新。
          對于一個figure的生存周期中,繪制(painting)和確認(validating)是主要的處理過程。draw2d會要求一個figure,調(diào)用繪制方法來遞歸的繪制自己。paint()方法會調(diào)用多個繪制方法:
            1。paintFigure():figure遞歸的繪制自己
            2。paintclientarea(): figure遞歸的繪制子圖
            3。paintborder():figure繪制邊界。
           當一個figure的size或者location需要重新計算時,將會調(diào)用確認。
            1。validate():要求figure的layout manager去重新布局它的子圖
            2。revalidate():調(diào)用invalidate;添加一個圖形和它的祖先去更新update manager的invalid list。
          posted on 2006-02-23 22:40 Long Long Ago 閱讀(1069) 評論(0)  編輯  收藏 所屬分類: GEF 、Eclipse
          主站蜘蛛池模板: 县级市| 额敏县| 宁武县| 简阳市| 化隆| 昆明市| 龙门县| 遂昌县| 乐至县| 新源县| 金秀| 蒙城县| 教育| 防城港市| 克什克腾旗| 开化县| 聂荣县| 两当县| 南皮县| 孝感市| 南充市| 汤阴县| 建德市| 高密市| 尤溪县| 鄂伦春自治旗| 蒙山县| 芜湖市| 岳普湖县| 宁晋县| 新竹县| 湖北省| 东阳市| 阳江市| 融水| 运城市| 双流县| 宝坻区| 寿阳县| 青岛市| 兴化市|