騎豬闖天下

          J2ME隨筆,記錄成長的腳步

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          [J2ME-原創] 跑馬燈功能

          也沒什么大懸念,就是一個坐標計算的問題

          部分代碼如下:

              
          /**
               * 繪制文字跑馬燈效果
               * 
          @param g
               
          */

              
          public void paint(Graphics g)
              
          {
                  
          if (i_marqueeStr != null && engine.state != Engine.STATE_CONFIRM)// 有內容
                  {
                      g.setClip(
          this.MARQUEE_X, this.MARQUEE_Y, SCREEN_WIDTH, 20);
                      g.setColor(
          25500);
                      g.setFont(Font.getFont(Font.FACE_MONOSPACE,
                              Font.STYLE_PLAIN, Font.SIZE_SMALL));
                      
          this.drawMarqueeStr(g, i_marqueeStr, this.MARQUEE_X,
                              
          this.MARQUEE_Y, SCREEN_WIDTH);

                  }

              }

              
              
          /**
               * 
          @param g
               * Graphics - graphics
               * 
          @param str
               * String - 要繪制的文字
               * 
          @param x
               * int - 文字的起始坐標X
               * 
          @param y
               * int - 文字的起始坐標Y
               * 
          @param endX
               * int - 跑馬燈區間的右邊框X坐標
               * 
               * 
          @return void
               * 
          */

              
          private String i_marqueeStr = null;//跑馬燈的內容
              private int marqueeStep = 0;
              
          private void drawMarqueeStr(Graphics g, String str, int x, int y, int endX)
              
          {
                  
          if(str.length() > 60)
                      str 
          = str.substring(0,60+ "";
                  
                  g.setFont(Engine.m_fDefaultFont);
                  
          int marqueeMoveWidth = 10;
                  
          if(str != null
                  
          {
                      g.setClip(x, y, endX, g.getFont().getHeight() 
          + 3);
                      g.setColor(
          0xFDFE01);
                      g.fillRect(x, y, endX, g.getFont().getHeight() 
          + 3);
                      g.setColor(
          0x2E00F4);
                      
          int strWidth = Util.getStringWidth(g.getFont(), str);//得到字長    
                      if(strWidth + x > endX)//如果字長大于區間寬-滾動繪字
                      {
                          
          int px = endX - marqueeMoveWidth * (marqueeStep++);
                          g.drawString(str, px, y 
          + 20);
                          
          if(px + strWidth < x)
                              marqueeStep 
          = 0;
                      }

                      
          else//直接繪字
                          g.drawString( str, x, y + 20);
                  }

              }

          posted on 2010-03-05 13:24 騎豬闖天下 閱讀(359) 評論(0)  編輯  收藏


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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 扎鲁特旗| 丰城市| 淅川县| 景洪市| 茌平县| 乐都县| 乌鲁木齐县| 信宜市| 遵化市| 铜陵市| 福清市| 榕江县| 上林县| 化州市| 丹东市| 抚宁县| 尼玛县| 内乡县| 河北区| 彩票| 南陵县| 育儿| 仁化县| 阿拉善左旗| 城固县| 汝州市| 历史| 渝中区| 乌兰察布市| 宾阳县| 静海县| 绥宁县| 赤峰市| 宜黄县| 永寿县| 文山县| 库尔勒市| 兴隆县| 平陆县| 兴化市| 永新县|