zoukankan      html  css  js  c++  java
  • java绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法

    /**

     *@author blovedr

     * 功能: java绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法

     * 日期: 2018年4月28日     16:20

     * 注释: 学习java的点点记录, 欢迎各位大神批评指导与交流。

     */

    package com.test1;

    import javax.swing.*;

    import java.awt.*;

    public class Demo_1 extends JFrame{

          

           MyPanel mp = null;  //自注: 定义MyPanel

           public static void main(String[] args) {

                  // TODO Auto-generated method stub

                  Demo_1 demo_1 = new Demo_1();

           }

          

           public Demo_1()

           {

               mp = new MyPanel();  //自注: 创建一个MyPanel类的对象mp

              

               this.add(mp);  //自注: 将mp加入到this(JFrame)里面去

              

               this.setSize(400, 300);

               this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //自注: 为了防止内存泄漏     设置窗口关闭按钮的默认操作(点击关闭时退出进程)

               this.setVisible(true);  //自注: 设置窗体是可见的

              

           }

    }

    //定义一个MyPanel(我自己的面板, 是用于绘图和显示绘图的区域)

    class MyPanel extends JPanel

    {

        //覆盖JPanel 的paint方法

           //Graphics 是绘图的重要类, 你可以把它理解成一只画笔

           public void paint(Graphics g)

           {

             //1. 调用父类函数完成初始化(任务)

                  //这句话, 不能少

                  super.paint(g);

                  System.out.println("paint被调用");

                  //先画出一个圆

                  //g.drawOval(10, 10, 30, 30);

                 

                  //画出直线

                  //g.drawLine(10, 10, 40, 40);

                 

                  //画出矩形边框

                  //g.drawRect(10, 10, 40, 60);  //自注: g.drawRect(x, y, width, height); ---x和y代表矩形的左上角坐标

                 

               //填充矩形

                  //设置颜色

    //           g.setColor(Color.blue);

    //           g.fillRect(10, 10, 40, 60);

    //           g.setColor(Color.red);

    //           g.fillRect(70, 70, 40, 60);

                 

                  //在面板上画出图片---问题

                  //Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/hua.jpg"));  //error

                  //自注:Toolkit 是个类, 它里面有个静态方法叫 getDefaultToolkit() (得到它工具的集),  然后它有个getImage

                  //     Panel.class.getResource() ---用Panel这个类里面的getResource() 方法把这个图片加载到这个对象m里面去了。

                  //解决方法: Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/hua.jpg"));---将Panel.class.getResource("/hua.jpg")"替换成图片的路径,               //                    如下面的方法1_示例, 可以在面板上画出一张或多张图片

                 

                  //在面板上画出一张图片问题解决方法1_示例1---三朵花属于不同路径(hua,hua2,hua3分别属于不同文件夹下的单独一个图片)

                  //Image im = Toolkit.getDefaultToolkit().getImage("D:\picture\hua\hua.jpg");  //正确   2018.4.28  11:29

                 

                  //在面板上画出一张图片问题解决方法1_示例2---hua2和hua属于不同路径

                  Image im2 = Toolkit.getDefaultToolkit().getImage("D:\picture\hua2\hua2.jpg");  //正确   2018.4.28  15:18

                 

                  //在面板上画出一张图片问题解决方法1_示例3---hua3和(hua与hua2)属于不同路径

                  //Image im3 = Toolkit.getDefaultToolkit().getImage("D:\picture\hua3\hua3.jpg");  //正确   2018.4.28  15:29

                 

                 

                  //在面板上画出一张图片问题解决方法2_示例---三朵花属于同一个文件夹(hua,hua2,hua3分别属于相同同文件夹下的单独一个图片)

                  //Image im = Toolkit.getDefaultToolkit().getImage("D:\picture\hua\hua.jpg");

                  //Image im2 = Toolkit.getDefaultToolkit().getImage("D:\picture\hua\hua2.jpg");  //error 自注: 如果三个花属于同一个文件, 程序在这个程序中单独无法正常显示图片 。

                  //Image im3 = Toolkit.getDefaultToolkit().getImage("D:\picture\hua\hua3.jpg");

                 

                  //显示

                  //g.drawImage(im, 90, 90, 100, 50, this);  //示例1   //正确   2018.4.28  11:29

                 

                  g.drawImage(im2, 90, 90, 100, 50, this);  //示例2   //正确   2018.4.28  15:18

                 

                  //g.drawImage(im3, 90, 90, 100, 50, this);  //示例3  //正确   2018.4.28  15:29

                 

                  //自注: g.drawImage(im, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer)

                  //     dx1, dy1表示你画的图片的左上角,  dx2, dy2表示你用的图片要画多宽多高(dx2, dy2 ---宽, 高),   this代表JPanel本身。

                 

           }

    }

  • 相关阅读:
    SharedPreferences
    SQLiteOpenHelper
    JavaScript常用对象的方法和属性
    sublime 中文乱码
    windows 7 右下角登陆信息去除
    第七篇T语言实例开发,文本与程序的几种打开方法(版5.3)
    第六篇T语言实例开发,多点找色应用
    第五篇T语言实例开发,数组空间使用
    PHP实例开发(3)PHP中MVC学习之ThinkPHP
    第五篇T语言实例开发,百变字符(版本5.0)
  • 原文地址:https://www.cnblogs.com/blovedr/p/8968593.html
Copyright © 2011-2022 走看看