JavaGUI——繪圖技術基礎

Thinkd0or發表於2018-05-31

介紹:

繪圖技術一般使用在皮膚JPanel上,繪圖技術是重寫JPanel的paint製圖方法,使用的Graphics製圖類來完成各種各樣的圖案繪製。

使用paint製圖方法繪製的圖形,可以在皮膚自由的控制位置,不會受皮膚流式佈局的影響。

繪圖原理:

Component類提供了兩個和繪圖相關的方法:

  1. paint(Graphics g)繪製元件外觀
  2. repaint()重新整理元件外觀

paint方法會自動被呼叫的情況:

  1. 元件第一次顯示在螢幕時
  2. 視窗最小化或最大化
  3. 視窗大小改變時
  4. repaint函式被呼叫時

繪圖方法:

//重寫JPanel的paint繪圖方法
public void paint(Graphics g)
{
	//完成初始化
	super.paint(g);    //這句呼叫父類的paint方法,初始化。
        繪圖語句
}

關於為什麼要初始化: 點選開啟連結

製圖類常用的幾種方法:

各個引數介紹:

1:x1,y1是起點座標,x2,y2是終點座標。

2-5:x,y代起始位置,也就是圖形左上角的位置(x,y是相對該皮膚左上角而言),width和height代表寬和高,單位都是畫素。

6.畫圖片:

小編基礎建立圖片公式:

g.drawImage(Image img, int x, int y, int width,int height,this); //最後的的這個this就是代表把圖片新增到這個皮膚上,this就是this,不需要變

img怎麼創?建立img:

Image img=ImageIO.read(new File("圖片路徑"));
Image img=Toolkit.getDefaultToolkit().getImage("圖片路徑");

可以理解為:利用Toolkit(工具箱)這個類的getDefaultToolkit(獲取預設工具包)靜態方法中的getImage(獲取圖片)方法拿到圖片的資訊。

x和y是相對皮膚左上角的畫素,width和height代表寬和高。

7.畫字串:str代表要畫的字串,x與y是字串相對皮膚左上角的畫素。但是這時候字型、大小、顏色都是預設的。如果想修改,需要用8和9。

8:

g.setFont(new Font("楷書//字型",Font.BOLD//設定粗體斜體等等,30//字型大小));

9:

g.setColor(Color.red//字型顏色);

程式碼實現:

import java.awt.*;
import javax.swing.*;
public class Graphics_1 extends JFrame{
	MyPanel mp;		//定義我的皮膚
	public static void main(String[] args) {
		Graphics_1 a=new Graphics_1();
	}
	public Graphics_1()		//設定建構函式
	{
		mp=new MyPanel();
		this.add(mp);
		this.setTitle("中國夢");
		this.setIconImage(new ImageIcon("image/中國夢.jpg").getImage());
		this.setSize(500, 310);
		this.setLocation(200,200);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}
class MyPanel extends JPanel
{
	JButton jb1;
	MyPanel()
	{
		
	}
	@Override
	//重寫JPanel的paint繪圖方法
	public void paint(Graphics g)	//重寫paint方法
	{
		super.paint(g);		//初始化製圖方法
		g.setColor(Color.BLUE);		//設定顏色
		g.drawOval(340, 90, 100, 100);	//畫圓
		g.drawRect(370, 20, 40, 50);	//畫矩形
		g.setColor(Color.red);			//設定顏色
		g.setFont(new Font("楷體",Font.BOLD,30));	//設定字型
		g.drawString("中國夢", 340, 150);		//畫字元
		Image im=Toolkit.getDefaultToolkit().getImage("image/中國夢.jpg");  //載入圖片3
		g.drawImage(im, 0, 0, 340,270,this);	//畫圖片
	}
}
這只是皮膚的背景,還可以在皮膚上新增元件。
比如加個JButton。

會變成這樣:



歡迎各位在評論區留言探討~~



相關文章