梦想飞翔

自强不息
posts - 111, comments - 30, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

J2ME字体专题

Posted on 2009-03-05 08:59 love1563 阅读(299) 评论(0)  编辑  收藏 所属分类: j2me学习笔记

J2ME字体专题

<o:p> </o:p>

1,Font类的特点:

①没有构造函数

②是final类型的类

③没有color属性,只有三性:.

2,特点决定用法:不能被继承,不能被实例化.

<o:p> </o:p>

3,关于字体的知识:字体的形状-----face,字体的风格----Style,字体的大小---size

4,J2ME提供的字体:

形状: FACE_MONOSPACE---等宽字体

     FACE_PROPORTIONAL----均衡字体

     FACE_SYSTEM----系统字体

风格: STYLE_BOLD-----粗体

        STYLE_ITALIC---斜体

     STYLE_PLAIN----普通

        STYLE_UNDERLINED----下画线

  注意:风格可以组合.: 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技术比较简单,所以没有实现专门的颜色类,而只是使用RGB的概念来代表颜色。这里简单介绍一下RGB的概念,颜色是由红(Red)、绿(Green)、蓝(Blue)三原色组成的,所以可以使用这三个颜色的组合来代表一种具体的颜色,其中R、G、B的每个数值都位于0-255之间。在表达颜色的时候,即可以使用三个数字来表达,也可以使用一个格式如0X00RRGGBB这样格式的十六进制来表达,下面是常见颜色的表达形式:<o:p></o:p>

红色:(255,0,0)或0x00FF0000  
绿色:(0,255,0)或
0x0000FF00  
 蓝色:(255,255,255)或0x00FFFFFF<o:p></o:p>

可以使用setColor(int red,int green,int blue)或者setColor(int RGB)来设置字体的颜色,getColor()来获取字体的颜色

<o:p> </o:p>

6.用法:

①在Graphics类中的运用:

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);//设置字体

        }

        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>

②绘制会动的字体:

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中的运用很简单,List.setFont(int index,Font font)方法,可以把预设定好的字体.

<o:p> </o:p>

小结一下:字体在J2ME中是很重要的一部分,因为我们做出来的软件美观也是很重的义部分,字体有很多种,要设置跟更美观的字体可以使用德国开源包polish,j使用也很简单,就像css样式列表一样使用,通过它可以设置跟网页一样美观的字体,当我们要绘制动态字体的时候,其实就是坐标的变换,左右滚动变换x坐标,上下滚动,变换y坐标.

<o:p> </o:p>

<o:p> </o:p>


只有注册用户登录后才能发表评论。


网站导航: