java繪圖原理------在窗口界面(或面板上)畫出一張或多張圖片問題解決方法

/**java

 *@author blovedr函數

 * 功能: java繪圖原理------在窗口界面(或面板上)畫出一張或多張圖片問題解決方法工具

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

 * 註釋: 學習java的點點記錄, 歡迎各位大神批評指導與交流。this

 */spa

 

package com.test1;server

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自己。

             

       }

 

}

相關文章
相關標籤/搜索