java paint 怎么用_java如何使用paint方法画图
詳細內容
本篇文章的主要內容是關于在Java里用paint方法畫圖,具有一定參考價值,感興趣的朋友可以了解一下,希望能對你有所幫助。
java使用paint方法畫圖
需要繼承JFrame類來畫窗口 => public class Game extends JFrame {}
setTitle(String s); //設置窗口標題
setLocation(int x, int y); //設置窗口位置
setSize(int width, int height); //設置窗口寬和高
setVisible(true); //設置窗口可見,默認為flase,這個方法放在setLocation()和setSize后面較好,我放在前面窗口為黑色,本來默認為白色的
paint方法畫圖
定義后自動調用public class paint(Graphics g) {
Color c = g.getColor(); //記錄原來的顏色
Font f = g.getFont(); //記錄原來的字體
g.setColor(Color.BLACK); //設置畫線的顏色
g.drawLine(int x1, int y1, int x2, int y2); //兩點畫直線
g.drawRect(int x, int y, int width, int height); //左上角頂點加寬高畫矩形
g.fillRect(int x, int y, int width, int height); //畫填充矩形
g.setFont(new Font("楷體", Font.BOLD, 40)); //設置字體為楷體,粗體,大小為40
g.drawString(str, int x, int y); //畫出str字符串
g.setColor(c); //變回原來的顏色
g.setFont(f); //變回原來的字體}
GameUtil工具類導入圖片import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class GameUtil {
// 工具類最好將構造器私有化。
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類里面調用GameUtil
Image imag = GameUtil.getImage(“images/picture.png”); //我建立的一個images包,用來存儲圖片,引號里面為圖片的路徑
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); //設置線體顏色
g.drawLine(100, 100, 650, 100); //直線
g.drawRect(50, 150, 200, 200); //空心矩形
g.fillRect(550, 150, 200, 200); //實體矩形
g.drawOval(300, 150, 200, 200); //圓形
g.setFont(new Font("楷體", Font.BOLD, 90)); //設置字體
g.drawString("How are you?", 100, 100); //寫字
g.drawImage(imag, 250, 400, 300, 300, null); //插入圖片
g.setColor(c); //線條顏色變為原來的樣子
g.setFont(f); //字體變為原來的樣子
}
public void launchJFrame() {
this.setTitle("我的游戲"); //設置窗口標題
this.setSize(800, 800); //設置窗口大小
this.setLocation(100, 100); //設置窗口位置
this.setVisible(true); //設置窗口可見
/*this.addWindowListener(new WindowAdapter() { //叉掉窗口后,結束窗口所在的應用程序
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); */
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //叉掉窗口后,結束窗口所在的應用程序
}
public static void main(String args[]) {
MyGame game = new MyGame();
game.launchJFrame();
}}
設置圖片的大小
public Image getScaledInstance(int width, int height, int hints) ?//hints - 指示用于圖像重新取樣的算法類型的標志(這句話不知道是什么意思,照著下面的寫就對了)Image img = GameUtil.getImage("images/text1.jpg");img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
如果是要獲取圖片的大小,直接使用getWidth()和getHeight()方法就可以了width = img.getWidth();height = img.getheight();
雙緩沖技術解決閃爍
原理大概是:先將所需要畫的東西加載到緩沖區,然后將緩沖區中的內容全部畫到屏幕上,這樣就可以避免因為屏幕加載的東西太多導致屏幕瘋狂閃爍public void paint(Graphics g){
BufferedImage imag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //構建緩沖區
Graphics g2 = imag.creatGraphics(); //新建一支畫筆,使用這支畫筆來將內容畫到緩沖區中
g2.drawRect(...); //括號里面的參數就不寫了,此處用來說明一些畫圖操作
g2.drawImag(...);
g2.fillOval(...);
g.drawImage(imag, x, y, width, height, null); //將內容畫到屏幕上}
相關教程:Java視頻教程
總結
以上是生活随笔為你收集整理的java paint 怎么用_java如何使用paint方法画图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农用四轮车液压强升强降不好使咋回事往前边
- 下一篇: java mesos kubernete