小編給大家分享一下java使用paint方法畫圖的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
公司專注于為企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、商城開發(fā),微信小程序定制開發(fā),軟件按需定制等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
java使用paint方法畫圖
需要繼承JFrame類來畫窗口 => public class Game extends JFrame {}
setTitle(String s); //設(shè)置窗口標(biāo)題
setLocation(int x, int y); //設(shè)置窗口位置
setSize(int width, int height); //設(shè)置窗口寬和高
setVisible(true); //設(shè)置窗口可見,默認(rèn)為flase,這個(gè)方法放在setLocation()和setSize后面較好,我放在前面窗口為黑色,本來默認(rèn)為白色的
paint方法畫圖
定義后自動(dòng)調(diào)用
public class paint(Graphics g) { Color c = g.getColor(); //記錄原來的顏色 Font f = g.getFont(); //記錄原來的字體 g.setColor(Color.BLACK); //設(shè)置畫線的顏色 g.drawLine(int x1, int y1, int x2, int y2); //兩點(diǎn)畫直線 g.drawRect(int x, int y, int width, int height); //左上角頂點(diǎn)加寬高畫矩形 g.fillRect(int x, int y, int width, int height); //畫填充矩形 g.setFont(new Font("楷體", Font.BOLD, 40)); //設(shè)置字體為楷體,粗體,大小為40 g.drawString(str, int x, int y); //畫出str字符串 g.setColor(c); //變回原來的顏色 g.setFont(f); //變回原來的字體}
GameUtil工具類導(dǎo)入圖片
import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class GameUtil { // 工具類最好將構(gòu)造器私有化。 private GameUtil() { } public static Image getImage(String path) { BufferedImage bi = null; try { URL u = GameUtil.class.getClassLoader().getResource(path); bi = ImageIO.read(u); } catch (IOException e) { e.printStackTrace(); } return bi; }}
在Game類里面調(diào)用GameUtil
Image imag = GameUtil.getImage(“images/picture.png”); //我建立的一個(gè)images包,用來存儲(chǔ)圖片,引號(hào)里面為圖片的路徑
g.drawImage(imag, x, y, width, height, null); //imag圖片,位置,寬高,觀察者
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import javax.swing.JFrame; public class MyGame extends JFrame{ Image imag = GameUtil.getImage("images/text1.png"); //指定圖片 @Override public void paint(Graphics g) { Color c = g.getColor(); Font f = g.getFont(); g.setColor(Color.BLUE); //設(shè)置線體顏色 g.drawLine(100, 100, 650, 100); //直線 g.drawRect(50, 150, 200, 200); //空心矩形 g.fillRect(550, 150, 200, 200); //實(shí)體矩形 g.drawOval(300, 150, 200, 200); //圓形 g.setFont(new Font("楷體", Font.BOLD, 90)); //設(shè)置字體 g.drawString("How are you?", 100, 100); //寫字 g.drawImage(imag, 250, 400, 300, 300, null); //插入圖片 g.setColor(c); //線條顏色變?yōu)樵瓉淼臉幼? g.setFont(f); //字體變?yōu)樵瓉淼臉幼? } public void launchJFrame() { this.setTitle("我的游戲"); //設(shè)置窗口標(biāo)題 this.setSize(800, 800); //設(shè)置窗口大小 this.setLocation(100, 100); //設(shè)置窗口位置 this.setVisible(true); //設(shè)置窗口可見 /*this.addWindowListener(new WindowAdapter() { //叉掉窗口后,結(jié)束窗口所在的應(yīng)用程序 @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); */ this.setDefaultCloseOperation(EXIT_ON_CLOSE); //叉掉窗口后,結(jié)束窗口所在的應(yīng)用程序 } public static void main(String args[]) { MyGame game = new MyGame(); game.launchJFrame(); }}
設(shè)置圖片的大小
public Image getScaledInstance(int width, int height, int hints) ?//hints - 指示用于圖像重新取樣的算法類型的標(biāo)志(這句話不知道是什么意思,照著下面的寫就對(duì)了)
Image img = GameUtil.getImage("images/text1.jpg");img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
如果是要獲取圖片的大小,直接使用getWidth()和getHeight()方法就可以了
width = img.getWidth();height = img.getheight();
雙緩沖技術(shù)解決閃爍
原理大概是:先將所需要畫的東西加載到緩沖區(qū),然后將緩沖區(qū)中的內(nèi)容全部畫到屏幕上,這樣就可以避免因?yàn)槠聊患虞d的東西太多導(dǎo)致屏幕瘋狂閃爍
public void paint(Graphics g){ BufferedImage imag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //構(gòu)建緩沖區(qū) Graphics g2 = imag.creatGraphics(); //新建一支畫筆,使用這支畫筆來將內(nèi)容畫到緩沖區(qū)中 g2.drawRect(...); //括號(hào)里面的參數(shù)就不寫了,此處用來說明一些畫圖操作 g2.drawImag(...); g2.fillOval(...); g.drawImage(imag, x, y, width, height, null); //將內(nèi)容畫到屏幕上}
看完了這篇文章,相信你對(duì)java使用paint方法畫圖的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!