RT,给个视例代码,谢谢!

解决方案 »

  1.   

    双缓冲
    先声明个Graphics,把图片画在这个Graphics上面
    再把这个Graphics刷回屏幕的Graphics
      

  2.   

    你说的是不是抗锯齿 试试这个Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHints(new RenderingHints(
    RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON));
    g2d.draw...如果不是抗锯齿就参看RenderingHints的API添加其他的renderhints试试
      

  3.   

    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class TankClient extends Frame{
    public final static int GAME_WIDTH=800;
    public final static int GAME_HEIGHT=600;
    Image offScreenImage=null;

    int x=30,y=30;
    public void paint(Graphics g) {
    Color c=g.getColor();
    g.setColor(Color.RED);
    g.fillOval(x,y,50,50);
    g.setColor(c);

    y=y+10;
    }
            //双缓冲
    public void update(Graphics g) {
    if(offScreenImage==null){
    offScreenImage=this.createImage(GAME_WIDTH,GAME_HEIGHT);
    }
    Graphics gOffScreen=offScreenImage.getGraphics();
    Color c=gOffScreen.getColor();
    gOffScreen.setColor(Color.GREEN);

    gOffScreen.fillRect(0,0,GAME_WIDTH,GAME_HEIGHT);
    gOffScreen.setColor(c);
    paint(gOffScreen);
    g.drawImage(offScreenImage,0,0,null);
    }
    public void lauchFrame(){
    this.setLocation(0,0);
    this.setSize(GAME_WIDTH,GAME_HEIGHT);
    this.setTitle("TankWar");
    this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {
    System.exit(0);
    }

    });
    this.setResizable(false);
    this.setBackground(Color.GREEN);
    setVisible(true);

    new Thread(new paintThread()).start();
    }
    private class paintThread implements Runnable{
    public void run() {

    while(true){
    repaint();
    try {
    Thread.sleep(50);
    } catch (InterruptedException e) {

    e.printStackTrace();
    }
    }


    }

    }
    public static void main(String[] args) {
    TankClient tc=new TankClient();
    tc.lauchFrame();
    }}
      

  4.   

    private Image doubleBuffer;
    public void update(Graphics g){
    Dimension size=getSize();
    if(doubleBuffer.getWidth(this)!=size.width||doubleBuffer.getHeight(this)!=size.height)
    { doubleBuffer=createImage(size.width,size.height);
    }
    if(doubleBuffer!=null){
    //绘制到双缓存区
    Graphics g2=doubleBuffer.getGraphics();
    paint(g2);
    g2.dispose();
    //将双缓存复制到屏幕
    g.drawImage(doubleBuffer,0,0,null);
    }
    else
    {//不要双缓存,只绘制屏幕
    paint(g);
    }
    }
    public void paint(Graphics g){
    //在此绘图