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

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

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

    BaNg@taobao

    Just Do It!

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks
    GEF由于偏向的是以圖形表達(dá)模型,所以圖形表達(dá)能力一直都沒有java2d強,rotation新聞組從2004年就有人陸續(xù)不斷的提,但是3.5好像 也沒有列入,不過社區(qū)的力量就是強大,有人了contribute一段支持旋轉(zhuǎn)的代碼。我拿到代碼之后做了一個例子,由于它的transform不是 draw2d提供的平臺相關(guān)性transform(如java2d所做的調(diào)用windows system api 驅(qū)動硬件),所以rotation的效果不是很好,線條有些模糊。



    安裝:

    打開 https://bugs.eclipse.org/bugs/show_bug.cgi?id=117012,將附件下載下來,解壓縮放到插件目錄 (plugins或者dropins)。由于這是兩個fragements,不能直接加到plugin的dependencies,參見 http://bongyee.blogspot.com/2009/02/plug-in-dependencies-depend-on.html提 供的解決辦法。

    更新代碼支持旋轉(zhuǎn)

    在GEF中任何特征基本都會在MVC即model, editpart, figure三個層面做改動,rotation也不例外。

    1 在model object上加一個屬性int rotation_angle記錄當(dāng)前旋轉(zhuǎn)角度,添加get/set方法,且在set方法中觸發(fā)一個event給對應(yīng)的editpart。

    2 在editpart的createFigure方法中返回一個RotatableRectangleFigure。

    3 稍微有點麻煩的就是修改Editpart了。在diagram editpart中安裝繼承了xylayouteditpolicy的editpolicy都會給child editpart默認(rèn)安裝一個resizableeditpolicy,這樣選中一個editpart是就會在figure上出現(xiàn)八個handle,用來 move和resize。如果要支持rotation,覆蓋默認(rèn)的resiableeditpolicy為 RotatableResizableEditPolicy(捐獻(xiàn)提供),覆蓋方式為:

    public class XXDiagramEditPart
    {

    protected void createEditPolicies() {
    .
    installEditPolicy(EditPolicy.LAYOUT_ROLE, 
    new QQQXYLayoutEditPolicy());

     }

    }

    public class QQQXYLayoutEditPolicy
    {

    protected EditPolicy createChildEditPolicy(EditPart child) {
    if (child is RotatableChildEditPart)
    {
    return new RotatableResizableEditPolicy(true){
     旋轉(zhuǎn)命令
    protected Command getRotateCommand(
    RotatableChangeBoundsRequest request) {
    return new RotateCommand(getHost().getModel(), request.getAngleDelta());
    }

    }
    }
    }

    }

    RotateCommand非常簡單,execute的時候設(shè)置模型的角度 += angleDelta,undo的時候 -= angleDelta。

    4 響應(yīng)模型觸發(fā)的rotation事件,更新figure。

    public class MyRotatableEditPart //register as listener for model changing.
    {

    public void propertyChange(PropertyChangeEvent evt) {
    if (evt is Rotation Event)
    {
    //更新figure
    ((RotatableRectangleFigure)getFigure()).setAngle(getModel().getRotationAngle());
    }
    }


    歡迎大家來信msn多多交流
    posted on 2009-02-20 11:04 Always BaNg. 閱讀(2563) 評論(4)  編輯  收藏 所屬分類: JavaEclipse

    Feedback

    # re: GEF社區(qū)捐獻(xiàn)的一個圖形旋轉(zhuǎn)(Rotation)的例子 2009-02-20 13:33 jeasonzhao
    貌似不錯的樣子,關(guān)注一下了  回復(fù)  更多評論
      

    # re: GEF社區(qū)捐獻(xiàn)的一個圖形旋轉(zhuǎn)(Rotation)的例子 2009-07-15 22:23 madapple
    你好。我最近也在做gef方方面的東西,碰到了和你一樣旋轉(zhuǎn)的需求,很興奮看到了你帖子。能不能發(fā)一份示例代碼給我呢?謝謝  回復(fù)  更多評論
      

    # re: GEF社區(qū)捐獻(xiàn)的一個圖形旋轉(zhuǎn)(Rotation)的例子 2013-11-28 16:59 hustgaobo
    樓主 https://bugs.eclipse.org/bugs/show_bug.cgi?id=117012鏈接為何錯誤?能否賜教旋轉(zhuǎn)問題  回復(fù)  更多評論
      

    # re: GEF社區(qū)捐獻(xiàn)的一個圖形旋轉(zhuǎn)(Rotation)的例子 2013-11-29 20:56 hustgaobo
    @madapple你好,你的gef旋轉(zhuǎn)問題有了解決方法嗎?我正在做這個,能否賜教
      回復(fù)  更多評論
      

    主站蜘蛛池模板: 老司机亚洲精品影院在线观看| 亚洲熟妇AV一区二区三区宅男| 亚洲免费网站在线观看| 国产日本亚洲一区二区三区| 亚洲av无码一区二区三区人妖| A国产一区二区免费入口| 99爱免费观看视频在线| 成人免费视频小说| 亚洲夜夜欢A∨一区二区三区| 亚洲国产精品网站久久| 国产成人亚洲毛片| 亚洲国产精品久久66| 亚洲深深色噜噜狠狠网站| 特级毛片全部免费播放a一级| 久久成人免费播放网站| 成人免费无遮挡无码黄漫视频| 亚洲无码日韩精品第一页| 337p日本欧洲亚洲大胆精品555588| 亚洲第一区二区快射影院| 国产精品小视频免费无限app| 亚欧免费视频一区二区三区 | a级毛片免费高清毛片视频| 色播精品免费小视频| 亚洲乱码中文字幕综合234 | 噜噜噜亚洲色成人网站∨| 久久精品亚洲日本波多野结衣| 久久免费区一区二区三波多野| 四虎成人免费网址在线| 亚洲无av在线中文字幕| 亚洲国产日韩精品| 国产精品免费高清在线观看| 国产精品免费视频播放器| 亚洲精品综合一二三区在线| 羞羞漫画页面免费入口欢迎你| 182tv免费观看在线视频| 亚洲婷婷国产精品电影人久久| 亚洲国产精品综合久久20| 99精品免费视品| 国产免费av一区二区三区| 亚洲精品不卡视频| 久久高潮一级毛片免费|