<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    很久很久以前

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      34 隨筆 :: 4 文章 :: 17 評(píng)論 :: 0 Trackbacks
    Draw2D學(xué)習(xí)
    Draw2D is a lightweight system.輕量級(jí)系統(tǒng),指這個(gè)繪圖系統(tǒng)全部建立在一個(gè)重量級(jí)的控件上。對(duì)于Draw2D他是建立在SWT的Canvas上的。
    Draw2D的幾個(gè)部分
    1.figures
    主要功能:
       1。給一個(gè)figure注冊(cè)和去注冊(cè)監(jiān)聽器。這個(gè)figure會(huì)通知在這個(gè)figure中的鼠標(biāo)時(shí)間給監(jiān)聽器。
       2。結(jié)構(gòu)化的事件。比如figure層次的結(jié)構(gòu)化變化,figure的移動(dòng)和大小調(diào)整。
       3。當(dāng)光標(biāo)從figure上移過時(shí),光標(biāo)的改變和顯示。
       4。在figure的層次中操作figure的位置,包括添加移除訪問子節(jié)點(diǎn),或者訪問他們的父節(jié)點(diǎn)。
       5。存?。篺igure的layout manager;figure的size和location;還有tooltips。
       6。設(shè)置獲得焦點(diǎn)。
       7。設(shè)置figure的透明度和可視性。
       8。進(jìn)行坐標(biāo)變換,figure的交疊和碰撞檢測(cè)。
       9。繪制。
       10。確認(rèn)。
    figure有很多subclass,提供了很多附加的功能。比如
      1。shape,它包含了非矩形的figure,可以知道如何填充,并提供了對(duì)邊界的寬和類型的配置,并提供了異或的繪制方法。比如有橢圓,幾何線,多邊形,矩形,圓角矩形和三角形。
      2。widget,draw2d包含的figure允許你創(chuàng)建輕量級(jí)(lightweight)的部件(widget),從而在你的draw2d應(yīng)用程序中需要輸入控制時(shí)提供支持。這包含大量的按鈕,選擇框和文本圖形,標(biāo)簽。
      3。layer and pane,這些使用來作為子類的容器,他們提供了縮放,滾動(dòng)和講figure放置在不同layer上的能力。
    圖形上下文(the graphics context)
      當(dāng)一個(gè)figuer需要被繪制的時(shí)候輕量系統(tǒng)會(huì)調(diào)用fiuger的一個(gè)paint方法。每一個(gè)figure都會(huì)得到一個(gè)graphical context,他是Graphics的一個(gè)實(shí)例。作為參數(shù)傳給paint方法。這個(gè)繪圖上下文支持圖形操作包括繪制,填充圖形繪制它的文字。它也提供了圖形的狀態(tài),這些可以影響圖形操作。這些狀態(tài)包括當(dāng)前字體,背景前景顏色等等。
    2.LightweightSystem
    LightweightSystem時(shí)draw2d的核心。它提供了SWT Canvas控件和在其上建立的draw2d系統(tǒng)之間的映射。包含三個(gè)方面:
      1。the root figure.這個(gè)是LightweightSystem$RootFigure類的一個(gè)實(shí)例。這個(gè)是用戶的root figure的父類。它繼承了一些基于SWT Canvas的圖形環(huán)境,比如字體,前景背景顏色。
      2。the event dispatcher:SWTEventDispatcher類將SWT事件傳給Draw2D的root figure中相應(yīng)的部件。
      3。the update manager.它負(fù)責(zé)繪制并更新Draw2dfigure。當(dāng)一個(gè)繪制請(qǐng)求從下層的SWTcanvas傳來時(shí),LightWeightSystem將會(huì)調(diào)用updatemanager中的performUpdate方法。update manager將會(huì)維護(hù)一個(gè)非法的或者需要重畫的figure的worklist。upate manager會(huì)設(shè)法盡量連續(xù)的它的work list,這樣可以盡量的提高效率。默認(rèn)的update manager:DaferredUpdateManager允許通過再Display上的用戶線程來使工作隊(duì)列異步的更新。
    對(duì)于一個(gè)figure的生存周期中,繪制(painting)和確認(rèn)(validating)是主要的處理過程。draw2d會(huì)要求一個(gè)figure,調(diào)用繪制方法來遞歸的繪制自己。paint()方法會(huì)調(diào)用多個(gè)繪制方法:
      1。paintFigure():figure遞歸的繪制自己
      2。paintclientarea(): figure遞歸的繪制子圖
      3。paintborder():figure繪制邊界。
     當(dāng)一個(gè)figure的size或者location需要重新計(jì)算時(shí),將會(huì)調(diào)用確認(rèn)。
      1。validate():要求figure的layout manager去重新布局它的子圖
      2。revalidate():調(diào)用invalidate;添加一個(gè)圖形和它的祖先去更新update manager的invalid list。
    posted on 2006-02-23 22:40 Long Long Ago 閱讀(1074) 評(píng)論(0)  編輯  收藏 所屬分類: GEF 、Eclipse
    主站蜘蛛池模板: 日韩a毛片免费观看| 久久免费精彩视频| 亚洲尤码不卡AV麻豆| 免费又黄又爽又猛的毛片| 亚洲中文字幕AV在天堂| 国产一区二区三区在线观看免费 | 亚洲看片无码在线视频| **实干一级毛片aa免费| 久久精品国产亚洲AV麻豆不卡| 亚洲免费电影网站| 亚洲午夜精品一区二区公牛电影院 | 青草草在线视频永久免费| 国产精品黄页免费高清在线观看| 久久精品a亚洲国产v高清不卡| 免费看片A级毛片免费看| a级毛片在线视频免费观看| 亚洲国产精品碰碰| 精品免费人成视频app| 一区二区三区免费视频观看| 亚洲午夜国产精品无卡| 亚洲伊人久久综合中文成人网| jzzjzz免费观看大片免费| 99999久久久久久亚洲| 亚洲精品无码久久千人斩| 午夜免费福利在线观看| 免费国产黄网站在线观看视频| 亚洲色欲或者高潮影院| 亚洲第一网站男人都懂| 成人免费一级毛片在线播放视频| 久青草视频在线观看免费| 久久亚洲色WWW成人欧美| 67pao强力打造67194在线午夜亚洲| 亚洲毛片av日韩av无码| 性感美女视频免费网站午夜| 国产精品亚洲精品日韩动图| 91亚洲精品第一综合不卡播放| 亚洲午夜国产片在线观看| 日韩a在线观看免费观看| 国产特黄一级一片免费| 精品久久久久久亚洲综合网| 亚洲综合丁香婷婷六月香|