您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java如何使用paint方法画图

2024/11/16 15:53:05发布25次查看
本篇文章的主要内容是关于在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方法画图的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product