⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap5gramid.java

📁 J2ME MIDP 2.0 无线设备编程的一些源码
💻 JAVA
字号:
//Chap5GraMID.java file
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import java.io.*;

public class Chap5GraMID extends MIDlet implements CommandListener
{
    //添加多几个Command 对象    
    private Command exitCommand;
    private Command aCommand0, aCommand1, aCommand2, aCommand3, aCommand4, aCommand5;
    private Command aCommand6, aCommand7, aCommand8, aCommand9, aCommand10, aCommand11;
    private DemoCanvas myCanvas;
    public Chap5GraMID()
    {//在构造函数中创建Command 对象
        exitCommand =new Command("EXIT",Command.EXIT,2);
        aCommand0 =new Command("坐标移动演示",Command.SCREEN,3);
        aCommand1 =new Command("对齐演示",Command.SCREEN,3);
        aCommand2 =new Command("字体演示",Command.SCREEN,3);
        aCommand3 =new Command("字体演示v2",Command.SCREEN,3);
        aCommand4 =new Command("弧线与填充",Command.SCREEN,3);
        aCommand5 =new Command("扇形图",Command.SCREEN,3);
        aCommand6 =new Command("线条演示",Command.SCREEN,3);
        aCommand7 =new Command("图片显示",Command.SCREEN,3);
        aCommand8 =new Command("脱机图像绘制",Command.SCREEN,3);
        aCommand9 =new Command("图像旋转",Command.SCREEN,3);
        aCommand10=new Command("裁剪区演示",Command.SCREEN,3);
        aCommand11=new Command("Alpha混合演示",Command.SCREEN,3);
        
        myCanvas =new DemoCanvas();
        myCanvas.addCommand(exitCommand);
        
        myCanvas.addCommand(aCommand0);
        myCanvas.addCommand(aCommand1);
        myCanvas.addCommand(aCommand2);
        myCanvas.addCommand(aCommand3);
        myCanvas.addCommand(aCommand4);
        myCanvas.addCommand(aCommand5);
        myCanvas.addCommand(aCommand6);
        myCanvas.addCommand(aCommand7);
        myCanvas.addCommand(aCommand8);
        myCanvas.addCommand(aCommand9);
        myCanvas.addCommand(aCommand10);
        myCanvas.addCommand(aCommand11);

        myCanvas.setCommandListener(this);
    }
    protected void startApp(  ) throws MIDletStateChangeException
    {
        Display.getDisplay(this).setCurrent(myCanvas);
    }

    protected void pauseApp(  )
    {
    }

    protected void destroyApp( boolean p1 )
    {
    }

    public void commandAction(Command c,Displayable d)
    {//处理命令事件
        if (c ==exitCommand)
        {
            destroyApp(false);
            notifyDestroyed();
        }
        else if(c ==aCommand0)
        {
            myCanvas.demoType=0;
            myCanvas.textShow = "坐标移动演示";
            myCanvas.repaint();
        }
        else if(c ==aCommand1)
        {
            myCanvas.demoType=1;
            myCanvas.textShow = "对齐演示";
            myCanvas.repaint();
        }
        else if(c ==aCommand2)
        {
            myCanvas.demoType=2;
            myCanvas.textShow = "字体演示";
            myCanvas.repaint();
        }
        else if(c ==aCommand3)
        {
            myCanvas.demoType=3;
            myCanvas.textShow = "字体演示MIDPv2.0";
            myCanvas.repaint();
        }
        else if(c ==aCommand4)
        {
            myCanvas.demoType=4;
            myCanvas.textShow = "弧线与填充";
            myCanvas.repaint();
        }
        else if(c ==aCommand5)
        {
            myCanvas.demoType=5;
            myCanvas.textShow = "扇形图";
            myCanvas.repaint();
        }
        else if(c ==aCommand6)
        {
            myCanvas.demoType=6;
            myCanvas.textShow = "线条演示";
            myCanvas.repaint();
        }
        else if(c ==aCommand7)
        {
            myCanvas.demoType=7;
            myCanvas.textShow = "图片显示";
            myCanvas.repaint();
        }
        else if(c ==aCommand8)
        {
            myCanvas.demoType=8;
            myCanvas.textShow = "脱机图像绘制";
            myCanvas.repaint();
        }
        else if(c ==aCommand9)
        {
            myCanvas.demoType=9;
            myCanvas.textShow = "图像旋转";
            myCanvas.repaint();
        }
        else if(c ==aCommand10)
        {
            myCanvas.demoType=10;
            myCanvas.textShow = "裁剪区演示";
            myCanvas.repaint();
        }
        else if(c ==aCommand11)
        {
            myCanvas.demoType=11;
            myCanvas.textShow = "Alpha混合演示";
            myCanvas.repaint();
        }
    }
    //internal class DemoCanvas
    public class DemoCanvas extends Canvas
    {
        //把对象修改为public类型
        public String textShow="坐标移动演示";
        public int demoType=0;
        
        Font font1,font2,font3,font4;
        Font font_20_1,font_20_2;
        Image imageLogo,imageOffline;
        Image imageTrans1, imageTrans2;
        
        private int[] bRGB={
            0xFFFF0000, 0x0000FF00, 0x0000FF00, 0x0000FF00, 
            0x0000FF00, 0xFFFF0000, 0x0000FF00, 0x0000FF00, 
            0x0000FF00, 0x0000FF00, 0xFFFF0000, 0x0000FF00, 
            0x0000FF00, 0x0000FF00, 0x0000FF00, 0xFFFF0000, 
        };
        public DemoCanvas() 
        {
            font1 = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE);
            font2 = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_ITALIC, Font.SIZE_MEDIUM);
            font3 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM );
            font4 = Font.getDefaultFont();
            
            font_20_1 = Font.getFont(Font.FONT_STATIC_TEXT);
            font_20_2 = Font.getFont(Font.FONT_INPUT_TEXT);
            loadImage();
            transImage();
        }
        public void loadImage()
        {
            try
            {
                //装入png图片文件
                imageLogo = Image.createImage("/pic/logo.png");
            }
            catch (IOException e)
            {//需要import java.io.*;
                System.out.println("load png resource error " + e.getMessage());
                imageLogo = null;
            }
            //创建脱机的图像对象,高度比画布的高度少20个象素
            imageOffline = Image.createImage(getWidth(), getHeight()-20);
            Graphics g= imageOffline.getGraphics();
            g.setColor(0x0000FF); //绘制坐标线
            g.drawLine(0,0,imageOffline.getWidth(), imageOffline.getHeight());
            g.drawLine(0, imageOffline.getHeight(), imageOffline.getWidth(), 0);
            g.setColor(0x000000); 
            g.drawString("Offline Image",0,0,Graphics.TOP|Graphics.LEFT);
            g=null;
        }
        public void transImage()
        {//通过原有图像旋转创建新的图像对象
            //需要import javax.microedition.lcdui.game.* 仅MIDP v2.0支持
            if(null != imageLogo)
            {
                imageTrans1 = Image.createImage(imageLogo, 0, 0, 
                                                imageLogo.getWidth(), imageLogo.getHeight(), Sprite.TRANS_ROT90);
                imageTrans2 = Image.createImage(imageLogo, 0, 0, 
                                                imageLogo.getWidth(), imageLogo.getHeight(), Sprite.TRANS_MIRROR_ROT180);
            }
            else
            {
                imageTrans1 =null;
                imageTrans2 =null;
            }
        }
        public void paint(Graphics g) 
        {
            g.setColor(0xffffff);
            g.fillRect(0, 0, getWidth(), getHeight());
            
            g.setColor(0x000000);
            g.drawString(textShow,0,0,Graphics.TOP|Graphics.LEFT);
            if(0 == demoType)
                drawType0(g);
            else if(1 == demoType)
                drawType1(g);
            else if(2 == demoType)
                drawType2(g);
            else if(3 == demoType)
                drawType3(g);
            else if(4 == demoType)
                drawType4(g);
            else if(5 == demoType)
                drawType5(g);
            else if(6 == demoType)
                drawType6(g);
            else if(7 == demoType)
                drawType7(g);
            else if(8 == demoType)
                drawType8(g);
            else if(9 == demoType)
                drawType9(g);
            else if(10 == demoType)
                drawType10(g);
            else if(11 == demoType)
                drawType11(g);
        }
        public void drawType0(Graphics g) 
        {//演示坐标移动
            for(int i=0;i<4;i++)
            {
                g.translate(20, 20);
                g.drawString("坐标(0,0)", 0, 0, Graphics.TOP|Graphics.LEFT);
                System.out.println("coordinate = " + g.getTranslateX() + "," + g.getTranslateY());
            }
        }
        public void drawType1(Graphics g) 
        {//演示上下对齐
            g.setColor(0x0000FF); //绘制坐标线
            g.drawLine(getWidth()/2 ,0 ,getWidth()/2, getHeight());
            g.drawLine(0 ,getHeight()/2 ,getWidth(), getHeight()/2);

            g.setColor(0x000000);
            g.drawString("TOP_LEFT",getWidth()/2,getHeight()/2,Graphics.TOP|Graphics.LEFT);
            g.drawString("BOTTOM_LEFT",getWidth()/2,getHeight()/2,Graphics.BOTTOM|Graphics.LEFT);
            g.drawString("TOP_RIGHT",getWidth()/2,getHeight()/2,Graphics.TOP|Graphics.RIGHT);
            g.drawString("BOTTOM_RIGHT",getWidth()/2,getHeight()/2,Graphics.BOTTOM|Graphics.RIGHT);
        }
        public void drawType2(Graphics g) 
        {//演示字体
            g.setFont(font1);
            g.drawString("大号等宽加粗aMc",0,40,Graphics.TOP|Graphics.LEFT);
            g.setFont(font2);
            g.drawString("中号非等宽斜体aMc",0,70,Graphics.TOP|Graphics.LEFT);
            g.setFont(font3);
            g.drawString("中号系统字体",0,100,Graphics.TOP|Graphics.LEFT);
            g.setFont(font4);
            g.drawString("默认字体Default",0,130,Graphics.TOP|Graphics.LEFT);
        }
        public void drawType3(Graphics g) 
        {//演示MIDP v2.0字体
            g.setFont(font_20_1);
            g.drawString("字体FONT_STATIC_TEXT",0,40,Graphics.TOP|Graphics.LEFT);
            g.setFont(font_20_2);
            g.drawString("字体FONT_INPUT_TEXT",0,70,Graphics.TOP|Graphics.LEFT);
        }
        public void drawType4(Graphics g) 
        {//演示弧线与填充
            g.setColor(0x00FF0000);//线条设置为红色
            g.drawArc(20,30,30,30,0,90);
            g.drawArc(55,30,30,30,0,-180);
            g.drawArc(90,30,30,30,0,360);
            g.setColor(0x0000FF00);//填充设置为绿色
            g.fillArc(20,65,30,30,0,90);
            g.fillArc(55,65,30,30,0,-180);
            g.fillArc(90,65,30,30,0,360);
        }
        public void drawType5(Graphics g) 
        {//扇形图
            g.setColor(0x00FF0000);//填充设置为红色
            g.fillArc(40,40,110,110,0,130);
            g.setColor(0x0000FF00);//填充设置为绿色
            g.fillArc(40,40,110,110,130,90);
            g.setColor(0x000000FF);//填充设置为蓝色
            g.fillArc(40,40,110,110,220,140);           
        }
        public void drawType6(Graphics g) 
        {//线条演示
            g.setStrokeStyle(Graphics.SOLID);//线条设置实线
            g.setColor(0x00000000);//线条设置为黑色
            g.drawLine( 2,20,20,40);
            g.drawLine(20,40,50,30);
            g.drawLine(50,30,80,70);
            g.drawLine(80,70,110,60);

            g.setStrokeStyle(Graphics.DOTTED);//线条设置虚线
            g.setColor(0x00FF0000);//线条设置为红色
            g.drawLine( 2,40,20,30);
            g.drawLine(20,30,50,50);
            g.drawLine(50,50,80,10);
            g.drawLine(80,10,110,40);
        }
        public void drawType7(Graphics g) 
        {//图片显示演示
            if(null != imageLogo)
                g.drawImage(imageLogo, 0, 20, Graphics.TOP|Graphics.LEFT);
        }
        public void drawType8(Graphics g) 
        {//脱机图像绘制演示
            if(null != imageOffline)
                g.drawImage(imageOffline, 0, 20, Graphics.TOP|Graphics.LEFT);
        }
        public void drawType9(Graphics g) 
        {//图像旋转绘制演示
            //先绘制原始图像
            if(null != imageLogo)
                g.drawImage(imageLogo, 0, 20, Graphics.TOP|Graphics.LEFT);
            //直接旋转并且绘制
            if(null != imageLogo)
                g.drawRegion(imageLogo, 
                             0, 0, imageLogo.getWidth(), imageLogo.getHeight(),
                             Sprite.TRANS_MIRROR_ROT180, 0, 80, 
                             Graphics.TOP|Graphics.LEFT);
            //绘制经过翻转的图像
            if(null != imageTrans1)
                g.drawImage(imageTrans1, 60, 20, Graphics.TOP|Graphics.LEFT);
            if(null != imageTrans1)
                g.drawImage(imageTrans2, 60, 80, Graphics.TOP|Graphics.LEFT);
        }
        public void drawType10(Graphics g) 
        {//裁剪区演示
            g.setClip(0,20,100,60);
            g.setColor(0x0000FF00);//填充设置为绿色,
            //填充圆形,但实际只能影响到剪裁区
            g.fillArc(0,0,100,100,0,360);

            g.setFont(font1);
            g.setClip(0,120,60,20);
            g.setColor(0x00000000);//字体设置为黑色
            g.drawString("裁减区演示",60,120,Graphics.TOP|Graphics.HCENTER);
            g.setClip(60,120,60,20);
            g.setColor(0x0000FF00);//字体设置为绿色
            g.drawString("裁减区演示",60,120,Graphics.TOP|Graphics.HCENTER);
        }
        public void drawType11(Graphics g) 
        {//Alpha效果演示
            for(int i=0;i<20;i++)//不处理透明效果
                g.drawRGB(bRGB,0, 4,i*4,i*4+20, 4,4, false);
            for(int i=0;i<20;i++)//处理透明效果
                g.drawRGB(bRGB,0, 4,i*4,i*4+16+20, 4,4, true);
        }

        protected  void keyPressed(int keyCode) 
        {
        }
      
        protected  void keyReleased(int keyCode) 
        {
        }
      
        protected  void keyRepeated(int keyCode) 
        {
        }
      
        protected  void pointerDragged(int x, int y) 
        {
        }
      
        protected  void pointerPressed(int x, int y) 
        {
        }
      
        protected  void pointerReleased(int x, int y) 
        {
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -