隨筆 - 63  文章 - 0  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          圖像顯示

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


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

          例:
          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));
            */
           

           }

          }

           

           

           

           

           

           

           


          雙緩沖技術(shù):

          1  Component.createImage方法創(chuàng)建內(nèi)存Image對象
          2  在Image對象上進(jìn)行繪制的結(jié)果就成了一幅圖像
          3  在Image對象上執(zhí)行與組件表面同樣的繪制,Image
               對象中的圖像就是組件表面內(nèi)容的復(fù)制,當(dāng)組件重畫    時,只需要將內(nèi)存中的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)是不用導(dǎo)java.awt.Graphics包
                //Enumeration<MyLine>???????????????????????????
                
                
               });
           }

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

          //構(gòu)建主框架對象時是先調(diào)用paint()還是構(gòu)造函數(shù)

           

          posted @ 2008-08-10 21:37 lanxin1020 閱讀(183) | 評論 (0)編輯 收藏

           Graphics類與圖形繪制
          Componentp.getGraphics方法與Grahpics類

          Graphics.drawLine(int x1,int y1,int x2, int y2)方法;
          Graphics.drawStringString str,int x,int y)方法;
          Graphics.drawSting方法的坐標(biāo)參數(shù)是以坐下方為參考點(diǎn)的;


          例:

          package drawline;

          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Frame;
          import java.awt.Graphics;
          import java.awt.event.MouseAdapter;
          import java.awt.event.MouseEvent;
          import java.awt.event.WindowAdapter;
          import java.awt.event.WindowEvent;


          public class DrawLine extends Frame {

           private static final long serialVersionUID = 9004940250333651314L;

           public DrawLine()
           {
            this.addWindowListener(new WindowAdapter()
               {
                public void windowClosing(WindowEvent e) {
                 dispose();
                 System.exit(0);
                }
             
               });
            
            this.addMouseListener(new MouseAdapter()
               {
                
                int orgX;
                int orgY;
                public void mousePressed(MouseEvent e)
                {
                 orgX = e.getX();
                 orgY = e.getY();
                 
                }
                public void mouseReleased(MouseEvent e)
                {
                 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());
                 
                }//為什么用getGraphics().setColor(Color.RED)是不用導(dǎo)java.awt.Graphics包
                
                
               });
           }

           public static void main( String[] args) {
            System.out.println("String DrawLine");
            DrawLine mainFrame = new DrawLine();
            mainFrame.setSize(400,400);
            mainFrame.setTitle("Drawline");
            mainFrame.setVisible(true);
            
            
           }
          }

          組件重建的處理:

          1 組件重繪的原理  曝光
          2 paint(Graphics g)的作用

          AWT組件重繪路線:
          AWT Thread ->paint() ->AWT Thread
          repaint()+AWT Thread ->update(清除組件表面內(nèi)容調(diào)用paint()方法)->paint();

          例:
          package drawline;

          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Frame;
          import java.awt.Graphics;
          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 DrawLine extends Frame
          {
           int orgX;
           int orgY;
           int endX;
           int endY;
           Vector<MyLine> vLines = new Vector<MyLine>();
           
           public void paint(Graphics g)
           {
            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 DrawLine()
           {
            
            this.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());
                 */
                 vLines.add(new MyLine(orgX,orgY,endX,endY));
                 repaint();
                }//為什么用getGraphics().setColor(Color.RED)是不用導(dǎo)java.awt.Graphics包
                //Enumeration<MyLine>???????????????????????????
                
                
               });
           }

           public static void main( String[] args) {
            System.out.println("String DrawLine");
            DrawLine mainFrame = new DrawLine();
            mainFrame.setSize(400,400);
            mainFrame.setTitle("Drawline");
            mainFrame.setVisible(true);
            
            
           }
          }


          package drawline;

          import java.awt.Graphics;


          public class MyLine
          {
           private int orgX;
           private int orgY;
           private int endX;
           private int endY;
           public MyLine(int orgX, int orgY, int endX, int endY)
           {
            this.orgX = orgX;
            this.orgY = orgY;
            this.endX = endX;
            this.endY = endY;
           }
           
           
           public void drawMe(Graphics g)
           {
            System.out.println(orgX + "," + orgY + " "+endX + "," + endY);
            g.drawString(orgX + "," + orgY,orgX,orgY);
            g.drawString(endX + "," + endY,endX,endY);
            g.drawLine(orgX, orgY, endX, endY);
           }
           
           

          }

          posted @ 2008-08-10 07:51 lanxin1020 閱讀(271) | 評論 (0)編輯 收藏
          初學(xué)警示:


          面向?qū)ο缶幊趟枷耄?br /> 編程人員腦海里面想的問題應(yīng)該是:程序運(yùn)行時的各個時刻的各個對象的內(nèi)存布局和變化狀態(tài),以及每行代碼執(zhí)行后對這些對象產(chǎn)生的影響。而非頂住程序中靜止不變的代碼,孤立的琢磨每條語句的語法是否正確。
          posted @ 2008-08-07 15:53 lanxin1020 閱讀(160) | 評論 (0)編輯 收藏
          僅列出標(biāo)題
          共7頁: 上一頁 1 2 3 4 5 6 7 
          主站蜘蛛池模板: 南安市| 达尔| 双桥区| 磐石市| 渝中区| 宁德市| 琼中| 黑龙江省| 鄢陵县| 巨野县| 马公市| 谢通门县| 称多县| 弥渡县| 丘北县| 米易县| 井研县| 福建省| 乌兰浩特市| 孝感市| 长兴县| 孝义市| 雅安市| 大名县| 江津市| 明星| 郯城县| 新源县| 桐乡市| 吉安县| 开远市| 阿坝| 崇义县| 枣庄市| 清新县| 灵台县| 上栗县| 锡林郭勒盟| 天等县| 从化市| 错那县|