java学绘图吗_Java绘图
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
繪圖可以在應用程序中繪制圖片、文字、圖形等,在Java中主要可以使用Graphics和Graphics2D進行繪圖,其中Graphics類是所有圖形上下文的抽象基類,而Graphics2D就繼承了Graphics類。而Graphics功能沒有Graphics2D強大,Graphics2D是Graphics的擴展。
構造一個新的Graphics2D對象,因為Graphics2D是抽象類,所以無法直接創建對象,因很多繪圖對象是Graphics類的實例,所以這里使用了強制轉換。
publicvoid paint(Graphics gp){
super.paint(gp);
Graphics2D gp2d = (Graphics2D) gp;
}
使用Graphics2D進行繪制圖形
首先創建一個Demo1類繼承JFrame類成為窗體,以便顯示效果,在Demo1里創建一個內部類Plot類,該類繼承JPanel類(容器,把圖形放在這個容器里),
publicclass Demo1 extends JFrame{
privatestaticfinallongserialVersionUID = 1L;
//創建繪圖面板
class Plot extends JPanel{
privatestaticfinallongserialVersionUID = 1L;
在Plot內部類重寫panit()方法,再創建一個BasicStroke對象,Graphics2D可以調用setStroke方法設置筆畫的屬性,而這個方法要接受一個Stroke接口的實現類作為參數,這樣可以通過不同的構造方法創建筆畫屬性的不同對象。
class Plot extends JPanel{
publicvoid paint(Graphics gp){
//筆畫屬性,
BasicStroke bs = new BasicStroke( 10.1f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL);
super.paint(gp);
Graphics2D gp2d = (Graphics2D) gp;
}
}
在paint方法里面進行繪圖,(設置繪圖顏色后,后面繪圖都是采取這顏色作為前景色,如果需要更改為其他顏色的話,可以再次調用setColor()方法進行再次設置)
class Plot extends JPanel{
privatestaticfinallongserialVersionUID = 1L;
publicvoid paint(Graphics gp){
//筆畫屬性,
BasicStroke bs = new BasicStroke( 10.1f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL);
super.paint(gp);
Graphics2D gp2d = (Graphics2D) gp;
gp2d.setColor(Color.blue);
//第一個點的x坐標,第一個點的y坐標,第二個點的x坐標,第二點的坐標
gp2d.drawLine(30, 30, 80, 30);
//繪制矩形的x坐標,繪制矩形的y坐標,矩形的寬度,矩形的高度
gp2d.drawRect(10,50,100,50);
//繪制矩形的x坐標,繪制矩形的y坐標,矩形的寬度,矩形的高度,4個角弧度的水平直徑,4個角弧度的垂直直徑
gp2d.drawRoundRect(10, 120, 100, 70,12, 12);
gp2d.setColor(Color.black);
gp2d.fillOval(20, 130, 30, 20);
gp2d.fillOval(70, 130, 30, 20);
gp2d.setColor(Color.gray);
gp2d.fillArc(35, 160, 40, 25, 100,270);
Color c1 = new Color(22, 147, 140);//創建紅綠藍不透明的srgb顏色
gp2d.setColor(c1);
gp2d.drawOval(10, 200, 100, 60);//繪制橢圓的邊框。
//Graphics2D d=(Graphics2D) gp;
gp2d.fill3DRect(150, 30, 100, 80, false);
gp2d.fillOval(150,130, 100, 80);
gp2d.setStroke(bs);//設置筆畫屬性
gp2d.drawLine(300, 80, 300, 200);
}
}
在Demo類定義一個初始化窗體的方法,設置窗體大小,關閉窗體模式以及設置內容窗格等
//初始化窗體
privatevoid initialize(){
this.setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置窗體關閉模式
setContentPane(new Plot());
this.setTitle("繪圖小Demo");
this.setLocationRelativeTo(null);//窗體居中
this.setVisible(true);//設置窗體的可見性
}
Demo類構造器 調用初始化方法
publicDemo1(){
super();
initialize();
}
主方法 創建實例
publicstaticvoid main(String[] args) {
new Demo1();
}
效果:
繪制圖片:在圖片上繪制字符串并輸出成圖片格式
publicstaticvoid main(String[] args) throwsFileNotFoundException, IOException {
//獲取圖片緩沖區
BufferedImage bi = new BufferedImage(80,40,BufferedImage.TYPE_INT_RGB);
//得到繪制壞境(這張圖片的筆)
Graphics gh= (Graphics)bi.getGraphics();
gh.setColor(Color.WHITE);//設置顏色
gh.fillRect(0, 0, 80, 40);//填充整張圖片(其實就是設置背景色)
gh.setColor(Color.lightGray);
gh.drawRect(0, 0, 80-1, 40-1);//繪制一個四邊形邊框
gh.setFont(new Font("Bernard MT",Font.BOLD,18));//字體樣式字體格式字體大小
gh.setColor(Color.BLUE);//設置字體顏色
gh.drawString(getNum(10,100), 22,25);//向圖片上寫隨機字符串
ImageIO.write(bi, "PNG", new FileOutputStream("D:/test.png"));//把圖片輸出到指定路徑
隨機生成字符串方法
publicstatic String getNum(int num1,int num2){
//返回num1到num2之間的隨機數
Integer rand = num1 + (int)(Math.random()*(num2-num1));
//System.out.println(rand);
int a = (int)(Math.random()*100);
//返回a~z隨機的字符
char char1 = (char)('a'+Math.random()*('z'-'a'+1));
//返回A~Z隨機的字符
char char2 = (char)('a'+Math.random()*('Z'-'A'));
return rand.toString()+char1+char2;
}
運行輸出
總結
以上是生活随笔為你收集整理的java学绘图吗_Java绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java三级考试题库_JAVA题库:格林
- 下一篇: php的功能和特点,php有什么特点