【Java學習筆記】Java繪圖基礎

Java繪圖基礎

一、Java 坐標體系

1. 像素的概念

2. 坐標

在這里插入圖片描述

橫坐標:x

縱坐標:y

坐標原點:位于左上角

距離:表示距離原點有多少個像素單位


二、繪圖方法

1. 繪圖原理

Component 類提供了兩個和繪圖相關最重要的方法

當組件第一次在屏幕顯示的時候,程序會自動的調用 paint()方法來繪制組件。

在以下情況 paint()將會被調用

2. 繪制畫板

類:JPanel

自定義類繼承該類,重載 paint 構造器,調用父類的方法完成構造器的初始化(畫一個圓為示例

class MyPanel extends JPanel{@Overridepublic void paint(Graphics g) {super.paint(g);g.drawOval(150,50,100,100);}
}

代碼解析

  • Graphics是一個類,可以理解為畫筆,通過調用該類中的方法來完成繪圖

  • 調用該類中的drawOval()方法,繪制一個圓形

  • 畫圓的方法:首先根據坐標找到對應的位置,從該坐標點開始,按照給定的長度和寬度開始畫圓(如果長寬不一致就是橢圓)

3. 繪制窗口,顯示畫板內容

類:JFrame

讓主類繼承該類,創建畫板對象,在該類的構造器中完成窗口的初始化并添加畫板

窗口的構建步驟、

運行查看效果:在主函數中創建一個窗口對象,第一次會自動調用 paint()方法完成繪圖(前面的繪圖原理)

public class drawcircle extends JFrame{// 定義一個panelMyPanel 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{@Overridepublic void paint(Graphics g) {super.paint(g);System.out.println("paint方法被調用");g.setColor(Color.lightGray);g.fillRect(50,50,100,100);}
}

(4)繪制橢圓邊框,填充橢圓邊框的方法大同小異,這里不做贅述

(5)繪制文本字符串

字體樣式

字段描述
Font.PLAIN普通字體,默認樣式,沒有加粗和斜體效果。
Font.BOLD粗體樣式,文本加粗,通常用于強調文本。
Font.ITALIC斜體樣式,文本傾斜,用于表示風格或突出顯示部分文本。
Font.BOLD + Font.ITALIC粗斜體樣式,文本既加粗又傾斜,通常用于非常顯眼的文本。
class MyPanel extends JPanel{@Overridepublic 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 文件夾下的項目的根目錄(易錯:如果有多個包時,不是放在對應的包下,而是該項目名稱的根目錄下)

繪制步驟

class MyPanel extends JPanel{@Overridepublic 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);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/84084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84084.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

資深Java工程師的面試題目(一)基礎到高級概述

以下是幾道面向資深Java工程師的面試題目,涵蓋了從基礎知識到高級概念及參考答案: 1. Java內存模型和垃圾回收 問題: 請解釋一下Java的內存模型,并描述不同類型的內存區域。如何選擇適合特定應用需求的垃圾收集器?請比較幾種常…

Spring Retry:優雅地實現方法重試機制

前言 在實際的軟件開發中,尤其是在涉及網絡請求、數據庫操作或外部服務調用的場景下,我們常常會遇到一些臨時性故障(Transient Failures),例如網絡波動、數據庫連接超時、第三方 API 暫時不可用等。面對這些問題&…

Mysql報錯

1.權限問題 MySQL 認證協議不兼容問題解決方案 這個錯誤表明您的 MySQL 客戶端與服務器要求的認證協議不兼容,通常發生在 MySQL 8.0 服務器與舊版客戶端之間。 nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. …

小米汽車5月交付量超過28000臺,與上月持平

6月1日,小米汽車公布5月交付數據,2025年5月,小米汽車交付量超過28000臺,4月官方披露的交付數據也為28000臺。 此外,小米汽車5月新增29家門店,全國82城已有298家門店;6月計劃新增37家門店&#x…

嚴格一致性模型

SC 的第二點約束 :store 必須被 所有(包括自身)執行流 同時看到 ,但是不要求寫操作“立即”對其他處理器可見;允許寫操作延遲一會兒被其他核觀察到。 而 嚴格一致性模型,包括1. store 必須被 所有(包括自身)執行流 同時看到2. 看到的時間 必須是 某個處理器完成寫操…

結合 STM32CubeMX 使用 FreeRTOS 實時操作系統

前言 在STM32CubeMX軟件出現以后,創建嵌入式項目變得簡潔了許多,開發者無需重復編寫MCU的外設初始化配置,只需在STM32CubeMX軟件中動動鼠標配置完畢,就可以自動生成基于HAL/LL庫的Keil項目文件,提高了開發效率。 最近想…

一致性框架:供應鏈分布式事務問題解決方案

來源:得物技術 一、前言 二、一致性理論基礎 1. 一致性模型概述 2. 最終一致性的必要性 三、供應鏈一致性框架總體架構 1. 一致性框架的核心功能 2. 一致性框架整體框架 3. 一致性框架整體流程 四、一致性框架實現原理 1. 核心組件設計 2. 異步執行實現原…

民國大模型:智能重構下的亂世覺醒與文明轉型

引言:當外灘鐘聲遇見生成式AI 在歷史博物館的數字化展廳中,一幅動態的《民國百景圖》正通過全息投影技術演繹十里洋場的繁華與滄桑。這個虛實交融的場景,恰似民國大模型技術的隱喻——以人工智能為紐帶,連接起北洋軍閥混戰與民族…

ROS2 筆記匯總(2) 通信接口

在 ROS 系統中,通信接口(Interface) 是節點之間傳遞信息的標準“語言協議”,確保了不同功能節點之間可以正確理解和使用彼此傳送的數據內容。我們可以將其理解為“數據結構格式定義”,貫穿于話題(Topic&…

微信小程序:將搜索框和表格封裝成組件,頁面調用組件

一、實現效果 實現搜索框,表格和翻頁效果 二、組件實現 1、創建表格組件頁面 (1)創建文件 在文件根目錄(與pages同級)直接創建components文件夾,并創建表格的頁面common-table/index (2)視圖層 a、寫入表頭 循環由主頁面傳遞的columns,數據為字段名label,寬度為設置…

基于貝葉斯學習方法的塊稀疏信號壓縮感知算法

基于貝葉斯學習方法的塊稀疏信號壓縮感知算法 BSBL-FM-master/BSBL_BO.m , 15593 BSBL-FM-master/BSBL_FM.m , 12854 BSBL-FM-master/Phi.mat , 131256 BSBL-FM-master/README.md , 3954 BSBL-FM-master/demo.mat , 1610 BSBL-FM-master/demo_fecg.m , 1481 BSBL-FM-master/de…

【Python爬蟲】requests知識點講解

目錄 前言1. requests庫基礎1.1 安裝requests1.2 基本導入 2. HTTP請求方法2.1 GET請求2.2 POST請求2.3 其他HTTP方法 3. 請求頭設置3.1 User-Agent設置3.2 常用請求頭 4. 響應處理4.1 響應內容獲取4.2 響應狀態碼4.3 響應頭信息 5. 會話管理5.1 Session對象5.2 Cookie處理 6. …

服務器上安裝配置vsftpd

目錄 1. 安裝vsftpd服務 2、修改配置文件 3. 修改用戶白名單 4. 通過ftp客戶端命令登錄ftp服務器 5. 參考資料 1. 安裝vsftpd服務 執行命令安裝vsftp服務、和ftp客戶端 yum install vsftpd yum install ftp 2、修改配置文件 在服務器上先創建一個系統用戶,待…

C#實現圖片文字識別

這幾年的AI的發展,使得文字識別難度大大降低、精度大大的提高。百度飛漿就是一個非常好的AI框架,而且是開源的。 我們利用百度飛漿就能快速簡單的實現文字識別功能,幾行代碼就可以集成。 其中百度飛漿的PaddleOCR,就是專門針對文…

Android Framework 調用棧

在Android Framework開發中,添加調用棧(Call Stack)是調試復雜問題(如崩潰、死鎖或流程追蹤)的核心手段。 一、Java層調用棧添加 適用于Activity、Service等組件或Framework中的Java代碼。 基礎方法: 使用…

Ollama安裝非系統盤操作方法(2025年6月測試通過)

Ollama是當前部署大模型比較便利的工具,但是默認會將軟件和模型都安裝到C盤下,導致系統盤爆表,建議將軟件和模型都放置在非系統盤。 1. 軟件安裝在非系統盤 (1)在D盤下手動創建ollama目錄 (2&#xff09…

《HTTP權威指南》 第1-2章 HTTP和URL基礎

HTTP請求基礎 格式化數據塊稱為HTTP報文 請求報文:從客戶端發往服務器的HTTP報文,只有請求起始行請求首部,沒有請求主體 響應報文:從服務器發往客戶端的報文,包含響應起始行響應首部響應主體 HTTP報文通過傳輸控制…

9. TypeScript 泛型

TypeScript 中的泛型使開發者能夠編寫靈活、可重用的代碼,同時保持類型安全。它們允許動態定義類型,確保函數、類和接口可以適用于任何數據類型。這有助于避免重復,提高代碼的模塊化,使其既類型安全又具備適應性。 一、認識泛型 …

Apache Iceberg與Hive集成:分區表篇

一、Iceberg分區表核心概念與Hive集成原理 1.1 分區表在大數據場景的價值 在大規模數據分析中,分區表通過將數據按特定維度(如時間、地域、業務類型)劃分存儲,可顯著提升查詢效率。Apache Iceberg的分區表設計融合了Hive的分區理…

SAST + IAST + DAST 全鏈路防護體系構建方案

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 1. 生命周期分層嵌入(防御縱深) 階段工具防護重點集成觸發點編碼階段SAST源碼漏洞(硬編碼密鑰、SQL注入模式&#x…