JavaGUI——繪圖技術基礎
介紹:
繪圖技術一般使用在皮膚JPanel上,繪圖技術是重寫JPanel的paint製圖方法,使用的Graphics製圖類來完成各種各樣的圖案繪製。
使用paint製圖方法繪製的圖形,可以在皮膚自由的控制位置,不會受皮膚流式佈局的影響。
繪圖原理:
Component類提供了兩個和繪圖相關的方法:
- paint(Graphics g)繪製元件外觀
- repaint()重新整理元件外觀
paint方法會自動被呼叫的情況:
- 元件第一次顯示在螢幕時
- 視窗最小化或最大化
- 視窗大小改變時
- 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。
會變成這樣:
歡迎各位在評論區留言探討~~
相關文章
- Android 繪圖基礎Android繪圖
- Matplotlib繪圖基礎繪圖
- 【Android繪圖】繪圖之基礎篇(一)Android繪圖
- Matplotlib基礎繪圖功能繪圖
- Shader 繪製基礎圖形
- gojs 流程圖框架-基礎繪圖(一)GoJS流程圖框架繪圖
- 圖形影像處理之繪圖基礎繪圖
- android View 繪圖雙緩衝技術AndroidView繪圖
- canvas核心技術-如何繪製圖形Canvas
- JavaGUI——swing元件基礎(七)選項卡窗格JTabbedPaneJavaGUI元件
- Amadine Mac:用創新技術重塑繪圖藝術Mac繪圖
- WPF基礎:在Canvas上繪製圖形Canvas
- .NET跨平臺繪圖基礎庫--SkiaSharp繪圖
- 5-Windows程式設計 -繪圖基礎Windows程式設計繪圖
- 面試圖譜:前端基礎技術知識講解面試前端
- 前端基礎技術知識講解-面試圖譜前端面試
- 音視訊技術基礎
- Docker 技術基礎之 CGroupsDocker
- canvas核心技術-如何繪製圖片和文字Canvas
- 前端技術演進(一):Web前端技術基礎前端Web
- 現代通訊技術基礎中的基礎
- Lynx技術分析-JS引擎擴充套件技術基礎JS套件
- JavaGUI——Java圖形使用者介面JavaGUI
- Docker | Docker技術基礎梳理(一)Docker
- 網路通訊技術基礎
- 前端技術面——(js基礎一)前端JS
- 前端技術面——(js基礎二)前端JS
- 伺服器RAID技術基礎伺服器AI
- 技術day01 ──SQL基礎SQL
- Windows下基礎免殺技術Windows
- 社交網路分析的 R 基礎:(六)繪圖操作繪圖
- LLM技術全景圖:技術人必備的技術指南,一張圖帶你掌握從基礎設施到AI應用的全面梳理AI
- 技術基礎 | Apache Cassandra 4.0基準測試Apache
- 密碼技術繪總密碼
- 容器技術之Docker基礎入門Docker
- 虛擬化技術之kvm基礎
- 技術基礎 | 重要指標和告警指標
- Python-matplotlib-入門教程(一)-基礎圖表繪製Python