Java编程

java绘图教程

本篇文章的主要内容是关于在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后面较好,我放在前面窗口为黑色,本来默认为白色的

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)); //设置字体为楷体,粗体,大小为40g.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”); //指定图片@Overridepublic 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() { //叉掉窗口后,结束窗口所在的应用程序@Overridepublic 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();双缓冲技术解决闪烁

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

文明上网理性发言,请遵守 新闻评论服务协议

我要评论立即提交专题推荐独孤九贱-php全栈开发教程全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

玉女心经-web前端开发教程入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

天龙八部-实战开发教程实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

作者信息little bottle

最近文章mysql免费版好用么2554mysql怎么输入2316怎么看mysql安装路径3693发布技术文章最新文章热门排行

myeclipse如何导出项目Java 的 AutoCloseable 接口rpc框架有哪些java正则表达式用法是什么java敏感异常有

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注