• 技术文章 >Java >java教程

    java如何使用paint方法画图

    little bottlelittle bottle2019-04-28 15:09:05转载3202

    本篇文章的主要内容是关于在Java里用paint方法画图,具有一定参考价值,感兴趣的朋友可以了解一下,希望能对你有所帮助。

    java使用paint方法画图

    需要继承JFrame类来画窗口 => public class Game extends JFrame {}
    setTitle(String s); //设置窗口标题
    setLocation(int x, int y); //设置窗口位置
    setSize(int width, int height); //设置窗口宽和高
    setVisible(true); //设置窗口可见,默认为flase,这个方法放在setLocation()和setSize后面较好,我放在前面窗口为黑色,本来默认为白色的

    paint方法画图
    定义后自动调用

    public class paint(Graphics g) {
            Color c = g.getColor();   //记录原来的颜色
            Font f = g.getFont();     //记录原来的字体
            g.setColor(Color.BLACK);  //设置画线的颜色
            g.drawLine(int x1, int y1, int x2, int y2); //两点画直线
            g.drawRect(int x, int y, int width, int height);  //左上角顶点加宽高画矩形
            g.fillRect(int x, int y, int width, int height);  //画填充矩形
            g.setFont(new Font("楷体", Font.BOLD, 40));   //设置字体为楷体,粗体,大小为40
            g.drawString(str, int x, int y);  //画出str字符串
            g.setColor(c);  //变回原来的颜色
            g.setFont(f);   //变回原来的字体}

    GameUtil工具类导入图片

    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
    import javax.imageio.ImageIO;
    public class GameUtil {
        // 工具类最好将构造器私有化。
        private GameUtil() {
    
        }
    
        public static Image getImage(String path) {
            BufferedImage bi = null;
            try {
                URL u = GameUtil.class.getClassLoader().getResource(path);
                bi = ImageIO.read(u);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bi;
        }}

    在Game类里面调用GameUtil
    Image imag = GameUtil.getImage(“images/picture.png”); //我建立的一个images包,用来存储图片,引号里面为图片的路径
    g.drawImage(imag, x, y, width, height, null); //imag图片,位置,宽高,观察者

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.JFrame;
    public class MyGame extends JFrame{
            Image imag = GameUtil.getImage("images/text1.png");  //指定图片
            @Override
            public void paint(Graphics g) {
                    Color c = g.getColor();
                    Font f = g.getFont();
                    g.setColor(Color.BLUE);             //设置线体颜色
                    g.drawLine(100, 100, 650, 100);     //直线
                    g.drawRect(50, 150, 200, 200);      //空心矩形
                    g.fillRect(550, 150, 200, 200);      //实体矩形
                    g.drawOval(300, 150, 200, 200);      //圆形
                    g.setFont(new Font("楷体", Font.BOLD, 90));   //设置字体
                    g.drawString("How are you?", 100, 100);      //写字
                    g.drawImage(imag, 250, 400, 300, 300, null);   //插入图片
                    g.setColor(c);     //线条颜色变为原来的样子
                    g.setFont(f);      //字体变为原来的样子
            }
            public void launchJFrame() {
                    this.setTitle("我的游戏");       //设置窗口标题
                    this.setSize(800, 800);        //设置窗口大小
                    this.setLocation(100, 100);    //设置窗口位置
                    this.setVisible(true);         //设置窗口可见
                    /*this.addWindowListener(new WindowAdapter() {    //叉掉窗口后,结束窗口所在的应用程序
                            @Override
                            public void windowClosing(WindowEvent e) {
                                    System.exit(0);
                            }
                    });     */
                    this.setDefaultCloseOperation(EXIT_ON_CLOSE);   //叉掉窗口后,结束窗口所在的应用程序
    
            }
            public static void main(String args[]) {
                            MyGame game = new MyGame();
                            game.launchJFrame();
                    }}

    设置图片的大小
    public Image getScaledInstance(int width, int height, int hints)  //hints - 指示用于图像重新取样的算法类型的标志(这句话不知道是什么意思,照着下面的写就对了)

    Image img = GameUtil.getImage("images/text1.jpg");img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);

    如果是要获取图片的大小,直接使用getWidth()和getHeight()方法就可以了

    width = img.getWidth();height = img.getheight();

    双缓冲技术解决闪烁
    原理大概是:先将所需要画的东西加载到缓冲区,然后将缓冲区中的内容全部画到屏幕上,这样就可以避免因为屏幕加载的东西太多导致屏幕疯狂闪烁

    public void paint(Graphics g){
            BufferedImage imag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   //构建缓冲区
            Graphics g2 = imag.creatGraphics();   //新建一支画笔,使用这支画笔来将内容画到缓冲区中
            g2.drawRect(...);    //括号里面的参数就不写了,此处用来说明一些画图操作
            g2.drawImag(...);
            g2.fillOval(...);
            g.drawImage(imag, x, y, width, height, null);   //将内容画到屏幕上}

    相关教程:Java视频教程

    以上就是java如何使用paint方法画图的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java paint
    上一篇:Java怎样调用Javascript、Python算法 下一篇:jdk是什么意思
    PHP编程就业班

    相关文章推荐

    • Java线程异常结束怎么解决• Java中怎么调用类库?• java反射机制有什么用?• Java怎样调用Javascript、Python算法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网