夢(mèng)想飛翔

          自強(qiáng)不息
          posts - 111, comments - 30, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          J2ME字體專(zhuān)題

          Posted on 2009-03-05 08:59 love1563 閱讀(320) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): j2me學(xué)習(xí)筆記

          J2ME字體專(zhuān)題

          <o:p> </o:p>

          1,Font類(lèi)的特點(diǎn):

          ①?zèng)]有構(gòu)造函數(shù)

          ②是final類(lèi)型的類(lèi)

          ③沒(méi)有color屬性,只有三性:.

          2,特點(diǎn)決定用法:不能被繼承,不能被實(shí)例化.

          <o:p> </o:p>

          3,關(guān)于字體的知識(shí):字體的形狀-----face,字體的風(fēng)格----Style,字體的大小---size

          4,J2ME提供的字體:

          形狀: FACE_MONOSPACE---等寬字體

               FACE_PROPORTIONAL----均衡字體

               FACE_SYSTEM----系統(tǒng)字體

          風(fēng)格: STYLE_BOLD-----粗體

                  STYLE_ITALIC---斜體

               STYLE_PLAIN----普通

                  STYLE_UNDERLINED----下畫(huà)線(xiàn)

            注意:風(fēng)格可以組合.: STYLE_BOLD| STYLE_ITALIC 兩兩組合,或者三者組合STYLE_UNDERLINED |STYLE_BOLD| STYLE_ITALIC

          大小: SIZE_LARGE--- 16

                 SIZE_MEDIUM----0

                  SIZE_SMALL-----8

          <o:p> </o:p>

          5,color:由于J2ME技術(shù)比較簡(jiǎn)單,所以沒(méi)有實(shí)現(xiàn)專(zhuān)門(mén)的顏色類(lèi),而只是使用RGB的概念來(lái)代表顏色。這里簡(jiǎn)單介紹一下RGB的概念,顏色是由紅(Red)、綠(Green)、藍(lán)(Blue)三原色組成的,所以可以使用這三個(gè)顏色的組合來(lái)代表一種具體的顏色,其中R、G、B的每個(gè)數(shù)值都位于0-255之間。在表達(dá)顏色的時(shí)候,即可以使用三個(gè)數(shù)字來(lái)表達(dá),也可以使用一個(gè)格式如0X00RRGGBB這樣格式的十六進(jìn)制來(lái)表達(dá),下面是常見(jiàn)顏色的表達(dá)形式:<o:p></o:p>

          紅色:(255,0,0)或0x00FF0000  
          綠色:(0,255,0)或
          0x0000FF00  
           藍(lán)色:(255,255,255)或0x00FFFFFF<o:p></o:p>

          可以使用setColor(int red,int green,int blue)或者setColor(int RGB)來(lái)設(shè)置字體的顏色,getColor()來(lái)獲取字體的顏色

          <o:p> </o:p>

          6.用法:

          ①在Graphics類(lèi)中的運(yùn)用:

          package datuu.srk.demo.font;

          <o:p> </o:p>

          import javax.microedition.midlet.MIDlet;

          import javax.microedition.midlet.MIDletStateChangeException;

          import javax.microedition.lcdui.Canvas;

          import javax.microedition.lcdui.Graphics;

          import javax.microedition.lcdui.Font;

          import javax.microedition.lcdui.Display;

          <o:p> </o:p>

          public class GraphicsTest extends MIDlet {

              private GraphicsTestCanvas showCanvas;

              public GraphicsTest() {

                  showCanvas = new GraphicsTestCanvas();

              }

              protected void startApp() throws MIDletStateChangeException {

                  Display.getDisplay(this).setCurrent(showCanvas);

             }

          <o:p> </o:p>

              protected void pauseApp() {

              }

          <o:p> </o:p>

              protected void destroyApp(boolean _boolean) throws

                      MIDletStateChangeException {

              }

          <o:p> </o:p>

          <o:p> </o:p>

              class GraphicsTestCanvas extends Canvas {

                  private Font myFont;

                  public GraphicsTestCanvas() {

                      myFont = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_UNDERLINED|Font.STYLE_BOLD|Font.STYLE_ITALIC,Font.SIZE_LARGE);//設(shè)置字體

                  }

                  private final String showMessage = "kuikui,你好!";

                  protected void paint(Graphics g) {

                      g.setFont(myFont);

                      g.drawString(showMessage,this.getWidth()/2,this.getHeight()/2,Graphics.TOP|Graphics.LEFT);

                  }

              }

          }

          <o:p> </o:p>

          ②繪制會(huì)動(dòng)的字體:

          package datuu.srk.demo.font;

          <o:p> </o:p>

          import javax.microedition.lcdui.*;

          import javax.microedition.midlet.*;

          <o:p> </o:p>

          public class DrawCanvas extends MIDlet implements CommandListener {

              private Command exitCommand;

              private HCanvas sg;

              public DrawCanvas() {

                  exitCommand = new Command("Exit", Command.EXIT, 1);

                  sg = new HCanvas();

                  sg.addCommand(exitCommand);

                  sg.setCommandListener(this);

                  Display.getDisplay(this).setCurrent(sg);

          <o:p> </o:p>

              }

          <o:p> </o:p>

              protected void startApp() {

              }

          <o:p> </o:p>

              protected void pauseApp() {

              }

          <o:p> </o:p>

              protected void destroyApp(boolean unconditional) {

              }

          <o:p> </o:p>

              public void commandAction(Command c, Displayable d) {

                  if (c == exitCommand) {

                      destroyApp(false);

                      notifyDestroyed();

                  }

              }

          }

          <o:p> </o:p>

          <o:p> </o:p>

          class HCanvas extends Canvas implements Runnable {

          <o:p> </o:p>

              private String str = new String("Hello,LinuxFans");

              private int[] adjustHight = new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

                                          0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 3, 2, 1, 1, 2, 3,

                                          3, 4, 4, 3, 2, 1,};

              boolean bStart = true;

              private int k = str.length();

          <o:p> </o:p>

              public HCanvas() {

                  new Thread(this).start();

              }

          <o:p> </o:p>

              protected void paint(Graphics g) {

                  g.setColor(0x00ffffff);

                  g.fillRect(0, 0, getWidth(), getHeight());

                  g.setColor(0x00000000);

                  for (int i = 0; i < str.length(); i++) {

                      g.drawString(str.substring(i, i + 1), 20 + i * 7,

                                   10 - adjustHight[k - i], 0);

                      g.drawString(str.substring(i, i + 1), 21 + i * 7,

                                   11 - adjustHight[k - i], 0); //加重字體7是字體寬度

                  }

              }

          <o:p> </o:p>

              public void run() {

                  while (bStart) {

                      try {

                          repaint();

                          Thread.sleep(70);

                          k++;

                          if (k > (adjustHight.length - 1)) {

                              k = str.length();

                          }

                      } catch (InterruptedException e) {}

                  }

              }

          <o:p> </o:p>

          }

          <o:p> </o:p>

          List中的運(yùn)用很簡(jiǎn)單,List.setFont(int index,Font font)方法,可以把預(yù)設(shè)定好的字體.

          <o:p> </o:p>

          小結(jié)一下:字體在J2ME中是很重要的一部分,因?yàn)槲覀冏龀鰜?lái)的軟件美觀(guān)也是很重的義部分,字體有很多種,要設(shè)置跟更美觀(guān)的字體可以使用德國(guó)開(kāi)源包polish,j使用也很簡(jiǎn)單,就像css樣式列表一樣使用,通過(guò)它可以設(shè)置跟網(wǎng)頁(yè)一樣美觀(guān)的字體,當(dāng)我們要繪制動(dòng)態(tài)字體的時(shí)候,其實(shí)就是坐標(biāo)的變換,左右滾動(dòng)變換x坐標(biāo),上下滾動(dòng),變換y坐標(biāo).

          <o:p> </o:p>

          <o:p> </o:p>

          主站蜘蛛池模板: 虹口区| 天台县| 河西区| 潮安县| 察雅县| 柳江县| 鹤庆县| 乌拉特前旗| 崇州市| 南充市| 桑植县| 嘉禾县| 荣成市| 庄河市| 阳原县| 大荔县| 枝江市| 孝昌县| 长丰县| 陇南市| 博罗县| 大宁县| 赫章县| 明水县| 瓮安县| 额济纳旗| 镇康县| 邹平县| 铜梁县| 青冈县| 菏泽市| 广汉市| 西宁市| 丰镇市| 长岛县| 澄迈县| 清新县| 临清市| 吉安市| 乌拉特中旗| 崇仁县|