永发信息网

java中的paint方法中的drawimage方法怎么用?

答案:1  悬赏:0  手机版
解决时间 2021-03-21 12:39
java中的paint方法中的drawimage方法怎么用?
最佳答案
drawImage方法是用来将图片绘制到目标上

drawImage
public abstract boolean drawImage(Image img,
int x,
int y,
int width,
int height,
Color bgcolor,
ImageObserver observer)绘制指定图像中已缩放到适合指定矩形内部的图像。
图像绘制在此图形上下文坐标空间的指定矩形内部,如果需要,则进行缩放。以指定的背景色绘制透明像素。此操作等同于用给定颜色填充指定图像宽度和高度的矩形,然后在其上绘制图像,但此操作效率更高。

此方法在任何情况下都立刻返回,甚至在整个图像没有针对当前输出设备完成缩放、抖动或转换的情况下也是如此。如果当前的输出表示形式尚未完成,则 drawImage 返回 false。随着更多的图像可用,加载图像的进程将通知指定的图像观察者。

缩放的图像不一定立刻是可用的,因为已经为此输出设备构造了非缩放的图像。每种大小的图像可以被分别缓存,并由各自图像生产序列中的原始数据生成。

参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
x - x 坐标。
y - y 坐标。
width - 矩形的宽度。
height - 矩形的高度。
bgcolor - 在图像非透明部分下绘制的背景色。
observer - 当转换了更多图像时要通知的对象。

一个简单的例子(drawImage方法有很多变体 这里用的是最简单的一个)
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class GraphiscTest extends JLabel {
private static final long serialVersionUID = -1985867978449397006L;

public GraphiscTest() {
super();
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
BufferedImage image = new BufferedImage(150, 150,
BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2d = image.createGraphics();
g2d.setBackground(Color.GRAY);
g2d.clearRect(0, 0, getWidth(), getHeight());
g2d.drawString("Default Font", 10, 20);
g2d.drawLine(10, 22, 80, 22);
g2d.setFont(g.getFont().deriveFont(Font.BOLD | Font.ITALIC, 24f));
g2d.setColor(Color.WHITE);
g2d.setStroke(new BasicStroke(10f, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_MITER));
g2d.drawString("New Font", 10, 50);
g2d.drawLine(10, 57, 120, 57);
g2d.dispose();

g.drawImage(image, 0, 0, null);
}

public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(new GraphiscTest(), BorderLayout.CENTER);
frame.setSize(320, 240);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
义乌海波装饰材料商行在什么地方啊,我要过去
注册滴滴,车型不符能否注册,如可以注册官方
如何更改"windows资源管理器"的默认打开的文
品骏快递是什么快递
这是什么电影,有关外星人的
电信有没有上网专用套餐 就是流量多的手机卡
现在的人都喜欢什么??
北京民族大学时三本吗?
益津南路/兴华南路(路口)地址在哪,我要去那
接的词语有哪些
服务器开启Apache,内存和cpu就占满了。不开启
请问,电脑上输入网址的框没了怎么恢复,上输入
混凝土中粗细集料的粒径划分区别是什么
移动数据上面那个LET是什么意思!是4G网路吗
怎样用工商银行的自助柜员机充值羊城通?我需
推荐资讯
木字田中过(打一字)
3,6,9。12月什么成语
我换手机号了 现在微信登录不上 以前手机号也
旅游签 延期 或者 转换工作签的事,帮帮忙!
球场围网,球场围网多少钱,球场围网规格
福克斯,嘉年华2011年雨刷间歇继电器在什么位
3-甲基-4-乙基-5-丙基壬烷 结构式怎么写
据说英国排名第一的手机铃声叫什么名?大神们
他每周活动的频率如下用英语怎么写
梦见自己死去的老婆脱下裤子给我穿什么意思
中国移动伍佑东街手机大卖场在哪里啊,我有事
Clothes are just a of money, but one’s r
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?