圖像顯示
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 閱讀(177)
評論(0) 編輯 收藏 所屬分類:
j2se