java使用漆方法画图的方法

  介绍

小编给大家分享一下java使用漆方法画图的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

需要继承JFrame类来画窗口=比;公共类游戏延伸JFrame {}
setTitle (String s);,//设置窗口标题
setLocation (int x, int y);//设置窗口位置setSize
(宽度int, int高度);,//设置窗口宽和高
setVisible(真正的);,//设置窗口可见,默认为误,这个方法放在setLocation()和后setSize面较好,我放在前面窗口为黑色,本来默认为白色的


定义后自动调用

公共类油漆(图形g) {
  颜色c=g.getColor ();//记录原来的颜色
  字体f=g.getFont ();//记录原来的字体
  g.setColor (Color.BLACK);//设置画线的颜色
  g。画直线(int x1, int y?, int x2, y2 int);//两点画直线
  g。绘制矩形(int x, int y, int宽度,int高度);//左上角顶点加宽高画矩形
  g。宽度fillRect (int x, int y, int, int高度);//画填充矩形
  g。setFont(新字体(“楷体“,字体。大胆的,40));//设置字体为楷体,粗体,大小为40
  g。拉带(str, int x, int y);//画出str字符串
  g.setColor (c);//变回原来的颜色
  g.setFont (f);//变回原来的字体}

<强> GameUtil工具类导入图片

进口java.awt.Image;
  进口java.awt.image.BufferedImage;
  进口java.io.IOException;
  进口java.net.URL;
  进口javax.imageio.ImageIO;
  公开课GameUtil {//工具类最好将构造器私有化。
  私人GameUtil () {
  
  }
  
  公共静态图像getImage (String路径){
  BufferedImage bi=零;
  尝试{
  URL u=GameUtil.class.getClassLoader () .getResource(路径);
  bi=ImageIO.read (u);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  返回bi;
  }}

在游戏类里面调用GameUtil
图像图像放大=GameUtil.getImage(“图像/picture.png”);,//我建立的一个图片包,用来存储图片,引号里面为图片的路径
g。drawImage(图像放大,x, y,宽度,高度,null);,//图像放大图片,位置,宽高,观察者

进口java.awt.Color;
  进口属性;
  进口java.awt.Graphics;
  进口java.awt.Image;
  进口javax.swing.JFrame;
  公开课MyGame延伸JFrame {
  图像图像放大=GameUtil.getImage(“图像/text1.png");//指定图片
  @Override
  公共空间油漆(图形g) {
  颜色c=g.getColor ();
  字体f=g.getFont ();
  g.setColor (Color.BLUE);//设置线体颜色
  g。画直线(100,100,650,100);//直线
  g。绘制矩形(50、150、200、200);//空心矩形
  g。fillRect (550, 150, 200, 200);//实体矩形
  g。drawOval (300, 150, 200, 200);//圆形
  g。setFont(新字体(“楷体“,字体。大胆,90));//设置字体
  g.drawString(“你好吗?“,100年,100年);//写字
  g。drawImage(图像放大,250,400,300,300人,零);//插入图片
  g.setColor (c);//线条颜色变为原来的样子
  g.setFont (f);//字体变为原来的样子
  }
  公共空间launchJFrame () {
  this.setTitle(“我的游戏“);//设置窗口标题
  这一点。setSize (800、800);//设置窗口大小
  这一点。setLocation (100、100);//设置窗口位置
  this.setVisible(真正的);//设置窗口可见/*。addWindowListener(新WindowAdapter(){//叉掉窗口后,结束窗口所在的应用程序
  @Override
  公共空间windowClosing (WindowEvent e) {
  system . exit (0);
  }
  });*/this.setDefaultCloseOperation (EXIT_ON_CLOSE);//叉掉窗口后,结束窗口所在的应用程序
  
  }
  公共静态void main (String参数[]){
  MyGame游戏=new MyGame ();
  game.launchJFrame ();
  }}


公众形象getScaledInstance (int宽度,int高度,int提示)?//提示——指示用于图像重新取样的算法类型的标志(这句话不知道是什么意思,照着下面的写就对了)

图像img=GameUtil.getImage(“图像/text1.jpg"); img=img。getScaledInstance(宽度、高度、Image.SCALE_DEFAULT); 

如果是要获取图片的大小,直接使用getWidth()和获得()方法就可以了

宽度=img.getWidth();身高=img.getheight (); 


原理大概是:先将所需要画的东西加载到缓冲区,然后将缓冲区中的内容全部画到屏幕上,这样就可以避免因为屏幕加载的东西太多导致屏幕疯狂闪烁

公共空涂料(图形g) {   BufferedImage图像放大=new BufferedImage(宽度、高度,BufferedImage.TYPE_INT_RGB);//构建缓冲区   图形g2=imag.creatGraphics ();//新建一支画笔,使用这支画笔来将内容画到缓冲区中   g2.drawRect (…);//括号里面的参数就不写了,此处用来说明一些画图操作   g2.drawImag (…);   g2.fillOval (…);   g。drawImage(图像放大,x, y,宽度,高度,null);//将内容画到屏幕上}

java使用漆方法画图的方法