/**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自己。
}
}