您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)使用java繪制圖形的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Java中繪制基本圖形,可以使用Java類庫中的Graphics類,此類位于java.awt包中。在我們自己的java程序文件中,要使用Graphics類就需要使用import java.awt.Graphics
語句將Graphics類導入進來。
Graphics類提供基本的幾何圖形繪制方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等。本項目僅用到畫直線的功能,其它圖形繪制請自行點擊查閱Java API。
Graphics類的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)
此方法的功能是:在此圖形上下文的坐標系中,使用當前顏色在點 (x1,y1) 和 (x2,y2)之間畫一條線。
這里需要理解幾個概念:
1)、圖形上下文:通俗點講,就是畫圖環(huán)境。每個窗口構(gòu)件(如主窗口、按鈕等),都有一個自己的圖形上下文對象,我們就是使用這個對象來實現(xiàn)在構(gòu)件上畫圖。這個對象就是Graphics對象。
2)、如何獲得圖形上下文:我們要在哪個構(gòu)件上繪圖,就調(diào)用那個構(gòu)件的getGraphics()方法即可獲得該構(gòu)件的圖形上下文對象,然后使用這個對象繪圖。
3)、Java坐標系:
Java的坐標原點(0,0)位于屏幕的左上角,坐標度量以象素為單位,水平向右為X軸的正方向,豎直向下為Y軸的正方向,每個坐標點的值表示屏幕上的一個像素點的位置,所有坐標點的值都取整數(shù),如下圖所示:
4)、當前顏色:指圖形上下文當前的顏色。每個圖形上下文都有自己當前的顏色。通過Graphics對象的getColor()方法可獲取改顏色,setColor()方法可設(shè)置顏色。
示例如下:
第一步:給DrawSee類添加成員變量,用來描述游戲區(qū)域的特征。
對DrawSee類來說,此類主要完成的功能是與用戶交互,即顯示游戲區(qū)域,顯示數(shù)字,響應(yīng)用戶鼠標點擊,顯示用戶鼠標點擊后的結(jié)果等。我們現(xiàn)在考慮繪制10行10列游戲區(qū)域的問題。先給DrawSee類添加如下四個成員變量:
import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; public class DrawSee extends JFrame { private static final int sx = 50;//游戲區(qū)域10*10方塊的起始橫坐標 private static final int sy = 50;//游戲區(qū)域10*10方塊的起始縱坐標 private static final int w = 40;//每個小方格的邊長 private static final int rw = 400;//游戲區(qū)域10*10方塊的邊長 ... }
第二步:添加繪制游戲區(qū)域的方法(即繪制10行10列的紅色網(wǎng)格)
public void paintComponents(Graphics g) { try { // 設(shè)置線條顏色為紅色 g.setColor(Color.RED); // 繪制外層矩形框 g.drawRect(sx, sy, rw, rw); /* 繪制水平10個,垂直10個方格。 * 即水平方向9條線,垂直方向9條線, * 外圍四周4條線已經(jīng)畫過了,不需要再畫。 * 同時內(nèi)部64個方格填寫數(shù)字。 */ for(int i = 1; i < 10; i ++) { // 繪制第i條豎直線 g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw); // 繪制第i條水平線 g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w)); } } catch (Exception e) { e.printStackTrace(); } }
總結(jié):
import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; /** * * 程序入口 * */ public class TestDrawLine { public static void main(String[] args) { new DrawSee(); } } class DrawSee extends JFrame { private static final int sx = 50;//小方格寬度 private static final int sy = 50;//小方格高度 private static final int w = 40; private static final int rw = 400; private Graphics jg; private Color rectColor = new Color(0xf5f5f5); /** * DrawSee構(gòu)造方法 */ public DrawSee() { Container p = getContentPane(); setBounds(100, 100, 500, 500); setVisible(true); p.setBackground(rectColor); setLayout(null); setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } // 獲取專門用于在窗口界面上繪圖的對象 jg = this.getGraphics(); // 繪制游戲區(qū)域 paintComponents(jg); } public void paintComponents(Graphics g) { try { // 設(shè)置線條顏色為紅色 g.setColor(Color.RED); // 繪制外層矩形框 g.drawRect(sx, sy, rw, rw); /* 繪制水平10個,垂直10個方格。 * 即水平方向9條線,垂直方向9條線, * 外圍四周4條線已經(jīng)畫過了,不需要再畫。 * 同時內(nèi)部64個方格填寫數(shù)字。 */ for(int i = 1; i < 10; i ++) { // 繪制第i條豎直線 g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw); // 繪制第i條水平線 g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w)); // 填寫第i行從第1個方格到第8個方格里面的數(shù)字(方格序號從0開始) for(int j = 0; j < 10; j ++) { //drawString(g, j, i); } } } catch (Exception e) { e.printStackTrace(); } } }
結(jié)果如圖:
關(guān)于怎么用java繪制圖形就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。