java繪圖基礎 : 用java程式碼畫一個房子
網頁左邊,向下滑有目錄索引,可以根據標題跳轉到你想看的內容 |
---|
一、概述
java繪圖的主要核心類 |
---|
1、Graphics類,此類可以畫圖形,線條等,但是設定到變形等就不行了,由此衍生出更強大的類,Graphics2D |
2、Graphics2D,更加強大的繪圖類 |
1、繪製基本圖形
繪圖方法 |
---|
package com.test;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
public class Test extends JFrame{
public Test() {
setBounds(500,300, 800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
MyCanvas myCanvas = new MyCanvas();
add(myCanvas);
}
public static void main(String[] args) {
new Test();
}
private class MyCanvas extends Canvas{ //Canvas類,是畫布,我們沒有紙,只有筆,也沒辦法畫
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
Graphics2D g2d = (Graphics2D)g;
g2d.drawOval(5, 5, 100, 100);//畫圓
g2d.drawRect(15,15,80,80);//畫矩形
g2d.fillRect(45, 45,80,80);//填充矩形
g2d.drawArc(320,25,100,50,270,200);//弧線
g2d.drawLine(5,120,100,120);//直線
g2d.drawRoundRect(102, 120, 100, 50, 10, 10);//圓角矩形
//畫多邊形,第一個引數是橫座標陣列,第二個是縱座標陣列,第三個是有幾個點
int x[]= {250,300,250,300};
int y[]= {130,130,200,200};
// g2d.drawPolygon(x, y, 4);
//畫多邊線(測試多邊線需要註釋上面的程式碼,因為用的引數一樣重合了)
g2d.drawPolyline(x, y, 4);
//上面都是Graphics的方法,下面介紹2d是如何運作的
Shape shape = new Rectangle2D.Double(110,5,100,100);
g2d.draw(shape);
g2d.fill(shape);
}
}
}
2、設定畫筆顏色
package com.test;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
public class Test extends JFrame{
public Test() {
setBounds(500,300, 800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
MyCanvas myCanvas = new MyCanvas();
add(myCanvas);
}
public static void main(String[] args) {
new Test();
}
private class MyCanvas extends Canvas{
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
Graphics2D g2d = (Graphics2D)g;
g2d.fillRect(5,120,100,120);//直線
Color blue =Color.BLUE;
g2d.setColor(blue);
g2d.fillRect(125,125,103,125);
}
}
}
3、設定畫筆(粗細)
package com.test;
import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
public class Test extends JFrame{
public Test() {
setBounds(500,300, 800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
MyCanvas myCanvas = new MyCanvas();
add(myCanvas);
}
public static void main(String[] args) {
new Test();
}
private class MyCanvas extends Canvas{
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
Graphics2D g2d = (Graphics2D)g;
g2d.drawLine(5, 120, 100, 120);
Stroke stroke = new BasicStroke(10);//1、建立畫筆物件
g2d.setStroke(stroke);//2、設定畫筆
g2d.drawLine(5, 150, 100, 150);//畫
}
}
}
4、畫一個房子
package com.test;
import java.awt.BasicStroke;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import java.util.Random;
import javax.swing.JFrame;
public class Test extends JFrame{
public Test() {
setBounds(500,300, 800, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setBackground(new Color(78, 194, 207));
setVisible(true);
MyCanvas myCanvas = new MyCanvas();
add(myCanvas);
}
public static void main(String[] args) {
new Test();
}
private class MyCanvas extends Canvas{
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
Graphics2D g2d = (Graphics2D)g;
//雲
g2d.setColor(Color.WHITE);
g2d.fillOval(550, 2, 100, 50);
g2d.fillOval(520, -3, 80, 50);
g2d.fillOval(580, -5, 80, 50);
//煙囪
g2d.setColor(Color.BLACK);
g2d.fillRect(250, 20, 30, 80);
g2d.fillRect(650, 20, 30, 80);
//房頂
int x[] = {100,200,300};
int y[] = {100,10,100};
g2d.setColor(new Color(124,86,39));
g2d.fillPolygon(x, y, 3);
int x1[] = {500,600,700};
int y1[] = {100,10,100};
g2d.fillPolygon(x1, y1, 3);
//屋子
g2d.setColor(new Color(109,134,128));
g2d.fillRect(120,100,160,100);
g2d.fillRect(520,100,160,100);
//窗戶和門
g2d.setColor(Color.WHITE);
g2d.fillRect(130,120,50,50);
g2d.fillRect(220,120,50,80);
g2d.fillRect(530,120,50,50);
g2d.fillRect(620,120,50,80);
//太陽
g2d.setColor(Color.YELLOW);
g2d.fillOval(740, -20, 50, 50);
//路
g2d.setColor(new Color(124,86,39));
g2d.fillRect(0, 200, 800, 300);
//石子
g2d.setColor(Color.BLACK);
g2d.fillOval(0, 205, 10, 20);
Random r = new Random();
int moveX = 0;
int moveY = 0;
for(int i = 0;i<=100;i++) {
moveX = r.nextInt(800);
moveY = r.nextInt(300)+200;
g2d.fillOval(moveX, moveY, r.nextInt(10)+5,r.nextInt(15)+5);
}
}
}
}
相關文章
- 【Android繪圖】繪圖之基礎篇(一)Android繪圖
- JAVA基礎(二)—— java開發工具選擇及第一個程式Java
- Java 基礎02Java程式設計基礎Java程式設計
- JAVA:Java基礎-敲程式碼碰到的小問題Java
- java基礎:String — 原始碼分析(一)Java原始碼
- 用Dockerfile製作一個java應用映象,ubuntu基礎篇DockerJavaUbuntu
- gojs 流程圖框架-基礎繪圖(一)GoJS流程圖框架繪圖
- 寶付撰寫java基礎程式碼Java
- JAVA基礎之程式碼簡潔之道Java
- JAVA學習--JAVA基礎(一)Java
- 大資料基礎之開發第一個Java程式大資料Java
- 《java程式設計基礎》java的基礎知識(三)Java程式設計
- Java基礎知識整理之程式碼塊Java
- Java 初學者做的第一個微信小程式--關於Java基礎Java微信小程式
- Android 繪圖基礎Android繪圖
- Matplotlib繪圖基礎繪圖
- [Java 基礎]Java 程式的基本結構Java
- 5-Windows程式設計 -繪圖基礎Windows程式設計繪圖
- 一、(基礎知識)一個前端程式設計師的java小白之路前端程式設計師Java
- java:繪製圖形Java
- ai繪畫答疑:定製一個AI繪畫小程式要花多少錢?AI
- MeteoInfo-Java解析與繪圖教程(一)Java繪圖
- Matplotlib基礎繪圖功能繪圖
- 程式設計師必備基礎:改善Java程式的20個實用建議程式設計師Java
- 逆向基礎(十三) JAVA (一)Java
- (2020)JAVA基礎篇(一)Java
- Java基礎系列之一Java
- JAVA基礎語法(一)Java
- java零基礎入門(jdk安裝配置及第一個java程式的編寫)JavaJDK
- ai繪畫基礎總結(一)安裝設定AI
- java基礎:LinkedHashMap — 原始碼分析JavaHashMap原始碼
- java基礎:LinkedList — 原始碼分析Java原始碼
- java基礎:ArrayList — 原始碼分析Java原始碼
- java基礎:HashMap — 原始碼分析JavaHashMap原始碼
- java基礎:Enum — 原始碼分析Java原始碼
- java基礎:Integer — 原始碼分析Java原始碼
- Java基礎——HashMap原始碼分析JavaHashMap原始碼
- java基礎:TreeMap — 原始碼分析Java原始碼