隨筆 - 63  文章 - 0  trackbacks - 0
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          圖像顯示

          1 使用Graphics.drawImage(Image img, int x, int y, ImageObserver observer)
          方法顯示圖像。


          2 使用Component.getToolkit.getImage(String path)語句獲得Image實例對象。

          例:
          package drawimage;

          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.Image;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;

          public class DrawImage extends Frame
          {
              private static final long serialVersionUID = 1L;
           
              public DrawImage()
           {
             this.addWindowListener(new WindowAdapter()
                {
                 public void windowClosing(WindowEvent e)
                 {
                  dispose();
                  System.exit(0);
                 }
             
                 });
           }
           public static void main(String[] args)
           {
            System.out.println("Starting DrawImage.");
            DrawImage mainFrame = new DrawImage();
            Image img = mainFrame.getToolkit().getImage("love.jpg");
            
            mainFrame.setSize(400,400);
            mainFrame.setTitle("DrawImage");
            mainFrame.setVisible(true);
            Graphics g = mainFrame.getGraphics();
            while(!g.drawImage(img,150,150,mainFrame));
            
           

           }

          }

           

          圖像重畫


          package drawimage;

          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.Image;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;

          public class DrawImage extends Frame
          {
           Image img = getToolkit().getImage("love.jpg");
              private static final long serialVersionUID = 1L;
           public void paint(Graphics g)
           {
            g.drawImage(img,0,0,this);
           }
              public DrawImage()
           {
             this.addWindowListener(new WindowAdapter()
                {
                 public void windowClosing(WindowEvent e)
                 {
                  dispose();
                  System.exit(0);
                 }
             
                 });
           }
           public static void main(String[] args)
           {
            System.out.println("Starting DrawImage.");
            DrawImage mainFrame = new DrawImage();
            
            mainFrame.setSize(400,400);
            mainFrame.setTitle("DrawImage");
            mainFrame.setVisible(true);
            /*Graphics g = mainFrame.getGraphics();
            while(!g.drawImage(img,150,150,mainFrame));
            */
           

           }

          }

           

           

           

           

           

           

           


          雙緩沖技術:

          1  Component.createImage方法創建內存Image對象
          2  在Image對象上進行繪制的結果就成了一幅圖像
          3  在Image對象上執行與組件表面同樣的繪制,Image
               對象中的圖像就是組件表面內容的復制,當組件重畫    時,只需要將內存中的Image對象在組件上畫出;

          package drawline;

          import java.awt.Color;
          import java.awt.Dimension;
          import java.awt.Font;
          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.Image;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;
          //import java.util.Enumeration;
          import java.util.Vector;


          public class DrawLine1 extends Frame
          {
           int orgX;
           int orgY;
           int endX;
           int endY;
           Image oimg = null;
           Graphics og = null;
           Vector<MyLine> vLines = new Vector<MyLine>();
           
           public void paint(Graphics g)
           {
            if(oimg != null)
            {
              g.drawImage(oimg,0,0,this);
            }
            /*g.setColor(Color.RED);
            g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
            Enumeration<MyLine> e = vLines.elements();
            while(e.hasMoreElements())
            {
             MyLine line = (MyLine)e.nextElement();
                line.drawMe(g);
            }*/
            //g.drawLine(orgX, orgY, endX, endY);
           }
           private static final long serialVersionUID = 9004940250333651314L;

           public DrawLine1()
           {
            setSize(400,400);
            setTitle("Drawline");
            setVisible(true);
            
            Dimension d = getSize();
            oimg = createImage(d.width,d.height);
            og = oimg.getGraphics();
            
               addWindowListener(new WindowAdapter()
               {
                public void windowClosing(WindowEvent e) {
                 dispose();
                 System.exit(0);
                }
             
               });
            
            this.addMouseListener(new MouseAdapter()
            {
                
                
                public void mousePressed(MouseEvent e)
                {
                 orgX = e.getX();
                 orgY = e.getY();
                 
                }
                public void mouseReleased(MouseEvent e)
                {
                 endX = e.getX();
                 endY = e.getY();
                 Graphics g = getGraphics();
                 g.setColor(Color.RED);
                 g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
                 g.drawString(orgX + "," + orgY,orgX,orgY);
                 g.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());
                 g.drawLine(orgX, orgY, e.getX(),e.getY());
                 
                 og.setColor(Color.RED);
                 og.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));
                 og.drawString(orgX + "," + orgY,orgX,orgY);
                 og.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());
                 og.drawLine(orgX, orgY, e.getX(),e.getY());
                 /*vLines.add(new MyLine(orgX,orgY,endX,endY));
                 repaint();*/
                }//為什么用getGraphics().setColor(Color.RED)是不用導java.awt.Graphics包
                //Enumeration<MyLine>???????????????????????????
                
                
               });
           }

           public static void main( String[] args) {
            System.out.println("String DrawLine");
             new DrawLine1();
            
            
            
           }
          }

          //構建主框架對象時是先調用paint()還是構造函數

           

          posted on 2008-08-10 21:37 lanxin1020 閱讀(180) 評論(0)  編輯  收藏 所屬分類: j2se
          主站蜘蛛池模板: 蒙山县| 肥东县| 天祝| 宜兰县| 固原市| 北安市| 西和县| 治多县| 张家港市| 永吉县| 望奎县| 龙泉市| 四会市| 巴南区| 泰顺县| 长泰县| 临漳县| 吴忠市| 樟树市| 涡阳县| 灵丘县| 沙洋县| 青阳县| 师宗县| 嵊州市| 宣汉县| 隆化县| 闽清县| 昭通市| 阳曲县| 岳西县| 新竹县| 霍林郭勒市| 太白县| 根河市| 屏边| 莫力| 尉犁县| 和政县| 江孜县| 固始县|