介绍
小编给大家分享一下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使用漆方法画图的方法