java paint的使用_java使用paint方法画图的方法

java使用paint方法画图的方法

发布时间:2020-08-24 12:06:15

来源:亿速云

阅读:98

作者:小新

小编给大家分享一下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使用paint方法画图的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值