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

             

       }

 

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM