zoukankan      html  css  js  c++  java
  • Java双缓冲绘图

    方法一:

    import java.awt.*;
    import javax.swing.*;
    
    public class skyplane {
        public static void main(String[] args) {
    
            JFrame w = new JFrame();
            w.setSize(824, 446);
    
            MyPanel mp = new MyPanel();
            w.add(mp);
    
            Thread t = new Thread(mp);
            t.start();
    
            w.show();
    
        }
    }
    
    class MyPanel extends JPanel implements Runnable {
        Graphics g1;
        Image buffer, plane, sky;
        int x = 10;
        int y = 400;
    
        public void paint(Graphics g) {
            super.paint(g);
    
            buffer = createImage(getWidth(), getHeight());// 创建图像缓冲区
            g1 = buffer.getGraphics(); //创建绘图区
            plane = new ImageIcon("image/plane.png").getImage(); //获取图像
            sky = new ImageIcon("image/sky.png").getImage(); //获取图像
    
            g1.drawImage(sky, 0, 0, this); //将图像先画到缓冲区
            g1.drawImage(plane, x, y, this); //将图像先画到缓冲区
            g.drawImage(buffer, 0, 0, this); //将缓冲区里的图像画出
        }
    
        public void run() {
            while (true) {
                if (x == 800)
                    x = 10;
                else
                    x += 2;
                if (y == 0)
                    y = 400;
                else
                    y--;
                try {
                    Thread.sleep(50);
                } catch (Exception e) {
                }
                repaint();
            }
        }
    
    }
     

    方法二:

    import java.applet.*;
    import java.awt.*;
    
    public class skyplane extends Applet {
    
        Image buffer, plane, sky;
        Graphics g1;
        Thread td;
        int x = 0;
    
        public void init() {
            this.setSize(824, 446);
            buffer = createImage(getWidth(), getHeight()); // 创建图像缓冲区
            g1 = buffer.getGraphics(); // 创建绘图区
            plane = getImage(getCodeBase(), "image/plane.png");
            sky = getImage(getCodeBase(), "image/sky.png");
        }
    
        public void paint(Graphics g) {
            g1.drawImage(sky, 0, 0, this);// 将图像先画到缓冲区
            g1.drawImage(plane, x, 20, this); // 将图像先画到缓冲区
            g.drawImage(buffer, 0, 0, this);
            try {
                Thread.sleep(50);
                x += 2;
                if (x == 800) {
                    x = 2;
                    Thread.sleep(50);
                }
            } catch (InterruptedException e) {
            }
            repaint();
        }
    
        public void update(Graphics g) {
            paint(g);
        }
    }
  • 相关阅读:
    UIPickerView
    visual studio2010生成get方法和set方法快捷键
    vmware安装mac虚拟机键盘失灵解决方法
    运行android模拟器过大
    [SQL Utility] How to retrieve Oracle’s version info?
    【读书笔记】c# in depth (1)
    [Oracle 10g] About Recycle bin
    [Oracle Troubleshooting] Get Oracle Bounces When Data File Is Missing
    [Oracle Mgmt]Clone Oracle Database Manually
    [SQL*PLUS]Set Up Sql*Plus
  • 原文地址:https://www.cnblogs.com/zuferj115/p/5008154.html
Copyright © 2011-2022 走看看