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本身。

             

       }

}

猜你喜欢

转载自www.cnblogs.com/blovedr/p/8968593.html