浪跡天涯
          web報表設(shè)計器....
          posts - 61,comments - 71,trackbacks - 0
          ???? /**
          ?????*?畫帶箭頭的線
          ?????*?
          */

          ????
          public ? void ?paintk(GC?g,? int ?x1,? int ?y1,? int ?x2,? int ?y2)? {

          ????????
          double ?H? = ? 10 ;? // 箭頭高度???
          ???????? double ?L? = ? 7 ; // 底邊的一半??
          ???????? int ?x3? = ? 0 ;
          ????????
          int ?y3? = ? 0 ;
          ????????
          int ?x4? = ? 0 ;
          ????????
          int ?y4? = ? 0 ;
          ????????
          double ?awrad? = ?Math.atan(L? / ?H);? // 箭頭角度???
          ???????? double ?arraow_len? = ?Math.sqrt(L? * ?L? + ?H? * ?H); // 箭頭的長度???
          ???????? double []?arrXY_1? = ?rotateVec(x2? - ?x1,?y2? - ?y1,?awrad,? true ,?arraow_len);
          ????????
          double []?arrXY_2? = ?rotateVec(x2? - ?x1,?y2? - ?y1,? - awrad,? true ,?arraow_len);
          ????????
          double ?x_3? = ?x2? - ?arrXY_1[ 0 ];? // (x3,y3)是第一端點???
          ???????? double ?y_3? = ?y2? - ?arrXY_1[ 1 ];
          ????????
          double ?x_4? = ?x2? - ?arrXY_2[ 0 ]; // (x4,y4)是第二端點???
          ???????? double ?y_4? = ?y2? - ?arrXY_2[ 1 ];

          ????????Double?X3?
          = ? new ?Double(x_3);
          ????????x3?
          = ?X3.intValue();
          ????????Double?Y3?
          = ? new ?Double(y_3);
          ????????y3?
          = ?Y3.intValue();
          ????????Double?X4?
          = ? new ?Double(x_4);
          ????????x4?
          = ?X4.intValue();
          ????????Double?Y4?
          = ? new ?Double(y_4);
          ????????y4?
          = ?Y4.intValue();
          ????????
          // g.setColor(SWT.COLOR_WHITE);
          ????????
          // 畫線
          ????????g.drawLine(x1,?y1,?x2,?y2);
          ????????
          // 畫箭頭的一半
          ????????g.drawLine(x2,?y2,?x3,?y3);
          ????????
          // 畫箭頭的另一半
          ????????g.drawLine(x2,?y2,?x4,?y4);

          ????}

          ????
          ????
          /**
          ?????*取得箭頭的繪畫范圍
          ?????
          */


          ????
          public ? double []?rotateVec( int ?px,? int ?py,? double ?ang,? boolean ?isChLen,
          ????????????
          double ?newLen)? {

          ????????
          double ?mathstr[]? = ? new ? double [ 2 ];
          ????????
          // 矢量旋轉(zhuǎn)函數(shù),參數(shù)含義分別是x分量、y分量、旋轉(zhuǎn)角、是否改變長度、新長度???
          ???????? double ?vx? = ?px? * ?Math.cos(ang)? - ?py? * ?Math.sin(ang);
          ????????
          double ?vy? = ?px? * ?Math.sin(ang)? + ?py? * ?Math.cos(ang);
          ????????
          if ?(isChLen)? {
          ????????????
          double ?d? = ?Math.sqrt(vx? * ?vx? + ?vy? * ?vy);
          ????????????vx?
          = ?vx? / ?d? * ?newLen;
          ????????????vy?
          = ?vy? / ?d? * ?newLen;
          ????????????mathstr[
          0 ]? = ?vx;
          ????????????mathstr[
          1 ]? = ?vy;
          ????????}

          ????????
          return ?mathstr;
          ????}
          posted on 2007-09-21 09:39 JJCEA 閱讀(5299) 評論(4)  編輯  收藏 所屬分類: swt日記

          FeedBack:
          # re: java畫帶箭頭的線
          2007-09-21 10:06 | 千里冰封
          呵呵,有點意思:)  回復(fù)  更多評論
            
          # re: java畫帶箭頭的線
          2007-09-24 16:08 | anxite
          public void paintk(GC g, int x1, int y1, int x2, int y2)
          GC g是什么?急用,謝謝!  回復(fù)  更多評論
            
          # re: java畫帶箭頭的線
          2007-09-24 18:09 | 我的java生涯
          swt提供了GC來畫圖的
          if (gc == null || gc.isDisposed()) {
          gc = new GC(canvas);
          }  回復(fù)  更多評論
            
          # re: java畫帶箭頭的方法
          2008-02-02 22:44 | 安安
          請問這個有全部的原始碼嗎,可否提供參考  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 琼海市| 弋阳县| 界首市| 铜川市| 吉隆县| 锡林郭勒盟| 伊通| 法库县| 桂平市| 平湖市| 丰城市| 蓝山县| 兴山县| 巨野县| 资溪县| 江安县| 和平县| 万山特区| 巴彦淖尔市| 长兴县| 普兰店市| 武川县| 南江县| 仙桃市| 定兴县| 宽城| 汤阴县| 四子王旗| 聂拉木县| 宁都县| 奇台县| 栾川县| 富平县| 鹰潭市| 蕉岭县| 会理县| 平利县| 汉中市| 中西区| 安平县| 四子王旗|