Java繪圖基礎
一、Java 坐標體系
1. 像素的概念
計算機在屏幕上顯示的內容 都是由屏幕上的每一個像素組成 的 像素是一個密度單位 ,而厘米是長度單位 ,兩者無法比較
2. 坐標
橫坐標:x
縱坐標:y
坐標原點 :位于左上角
距離:表示距離原點有多少個像素單位
二、繪圖方法
1. 繪圖原理
Component 類提供了兩個和繪圖相關最重要的方法
1. paint(Graphics g)繪制組件的外觀
當組件第一次 在屏幕顯示的時候,程序會自動的調用 paint()方法 來繪制組件。
在以下情況 paint()將會被調用
2. 繪制畫板
類:JPanel
自定義類繼承該類,重載 paint 構造器,調用父類的方法完成構造器的初始化(畫一個圓為示例 )
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; g. drawOval ( 150 , 50 , 100 , 100 ) ; }
}
代碼解析
Graphics
是一個類,可以理解為畫筆,通過調用該類中的方法來完成繪圖 畫圓的方法:首先根據坐標找到對應的位置,從該坐標點開始,按照給定的長度和寬度開始畫圓(如果長寬不一致就是橢圓)
3. 繪制窗口,顯示畫板內容
類:JFrame
讓主類繼承該類,創建畫板對象,在該類的構造器中完成窗口的初始化并添加畫板
窗口的構建步驟、
創建一個畫板對象(初始化畫板) this.setSize
(長,寬):設置窗口的大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
:關閉窗口時退出程序,避免占用資源
運行查看效果:在主函數中創建一個窗口對象,第一次會自動調用 paint()方法完成繪圖 (前面的繪圖原理)
public class drawcircle extends JFrame { MyPanel panel = null ; public drawcircle ( ) { panel = new MyPanel ( ) ; this . add ( panel) ; this . setSize ( 400 , 300 ) ; this . setVisible ( true ) ; this . setDefaultCloseOperation ( JFrame . EXIT_ON_CLOSE ) ; } public static void main ( String [ ] args) { new drawcircle ( ) ; }
}
繪圖效果
4. Graphics 類方法
方法 描述 setColor(Color c)
設置繪圖顏色。使用 Color
類指定顏色 。 setFont(Font font)
設置字體。使用 Font
類指定字體樣式 。 drawLine(int x1, int y1, int x2, int y2)
繪制一條線段,連接指定的兩個坐標點 (x1, y1)
和 (x2, y2)
。 drawRect(int x, int y, int width, int height)
繪制矩形 ,指定矩形的左上角 (x, y)
和寬度、高度。 fillRect(int x, int y, int width, int height)
繪制并填充矩形 ,指定矩形的左上角 (x, y)
和寬度、高度。 drawOval(int x, int y, int width, int height)
繪制橢圓 ,指定橢圓的外接矩形的左上角 (x, y)
和寬度、高度。 fillOval(int x, int y, int width, int height)
繪制并填充橢圓 ,指定橢圓的外接矩形的左上角 (x, y)
和寬度、高度。 drawString(String str, int x, int y)
在指定位置 (x, y)
繪制文本 字符串。 drawImage(Image img, int x, int y, ImageObserver observer)
在指定位置 (x, y)
繪制圖片 。
(1)繪制直線:傳入起始坐標和終點坐標
(2)繪制矩形邊框:傳入起始坐標,傳入矩形的長和寬
(3)填充矩形顏色:需要在繪制前設置矩形顏色(默認是黑色)
方法:setColor(Color.顏色名)
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被調用" ) ; g. setColor ( Color . lightGray) ; g. fillRect ( 50 , 50 , 100 , 100 ) ; }
}
(4)繪制橢圓邊框,填充橢圓邊框的方法大同小異,這里不做贅述
(5)繪制文本字符串
drwaString(“字符串”,起始橫坐標,起始縱坐標),起始坐標對應字體的左下角 需要設置字體(字體的類型,字體的樣式,字體的大小) g.setFont(new Font("楷體",Font.PLAIN,100))
字體樣式
字段 描述 Font.PLAIN
普通字體,默認樣式,沒有加粗和斜體效果。 Font.BOLD
粗體樣式,文本加粗,通常用于強調文本。 Font.ITALIC
斜體樣式,文本傾斜,用于表示風格或突出顯示部分文本。 Font.BOLD + Font.ITALIC
粗斜體樣式,文本既加粗又傾斜,通常用于非常顯眼的文本。
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被調用" ) ; g. setColor ( Color . lightGray) ; g. setFont ( new Font ( "楷體" , Font . PLAIN , 100 ) ) ; g. drawString ( "Java" , 70 , 150 ) ; }
}
(6)繪制圖片
準備工作:把圖片放在 out 文件夾下的項目的根目錄 (易錯:如果有多個包時,不是放在對應的包下,而是該項目名稱的根目錄下)
繪制步驟
獲取圖片資源: Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/image.png"))
,此處為固定寫法,把路徑換成圖片名稱即可
class MyPanel extends JPanel { @Override public void paint ( Graphics g) { super . paint ( g) ; System . out. println ( "paint方法被調用" ) ; Image image = Toolkit . getDefaultToolkit ( ) . getImage ( Panel . class . getResource ( "/image.png" ) ) ; g. drawImage ( image, 0 , 0 , 100 , 140 , this ) ; }
}