溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用java繪制圖形

發(fā)布時間:2020-06-25 11:33:14 來源:億速云 閱讀:398 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關(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ù),如下圖所示:

怎么用java繪制圖形

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é)果如圖:

怎么用java繪制圖形

關(guān)于怎么用java繪制圖形就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI