この記事の主な内容は、ペイント メソッドを使用して Java で絵を描くことです。一定の参考価値があります。興味のある友人は、次のことを学ぶことができます。それがあなたのお役に立てば幸いです。
window=> public class Game extends JFrame {}
を描画するには、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"); //画像を保存するための画像パッケージを作成しました。画像のパスは引用符で囲まれています
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, inthints) //ヒント - 画像のリサンプリングに使用されるアルゴリズムのタイプを示すフラグ (この文の意味がわかりません。次のように書いてください)以下に続きます)
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でペイントメソッドを使って絵を描く方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。