JAVA Graphics类中drawImage方法怎么用
drawImage(Imageimg,intdx1,intdy1,intdx2,intdy2,intsx1,intsy1,intsx2,intsy2,ImageObser...
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
最后一个参数是填什么东西,不懂,API文档写的不清楚 展开
最后一个参数是填什么东西,不懂,API文档写的不清楚 展开
展开全部
Graphics有六个drawImage方法,我们用的最多的是 public abstract boolean drawImage(Image img, int x, int y,int width, int height,ImageObserver observer);
img是要加载的图像,x,y是指定绘制图像矩形左上角的位置,width是指定绘制图像矩形的宽,width是指定绘制图像矩形的高,observer是要绘制图像的容器。
因为Graphics是一个抽象类,所以我们一般是重写其它容器的paint方法,例如JPanel或者JFrame等。下面是一个具体的例子:
package konw.win;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyGraphics extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
public void paint(Graphics g)
{
Toolkit tool = this.getToolkit();
Image image = tool.getImage("image.jpg");
g.drawImage(image, 10, 10, image.getWidth(this),image.getHeight(this), this);
}
}
public class WinDrawImageTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.add(new MyGraphics());
frame.setVisible(true);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后一个添null就可以了,那是用来检测图片改变的“图片观察者”,实际中基本用不到。因为这个观察者类在java设计中有严重缺陷,会导致图片绘制不及时,所以图片更新的工作往往都是由开发者自己来做。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-19
展开全部
drawImage你知道是画图了。准确地说,这个是异步画图(就是说,不同步),执行了之后,画图了,但是以后可能会有新的部分需要画(动画图的第二帧或者第一次只画一半),那么,当新的部分被画的时候,很可能是在另一个线程里画的,不是你调用drawImage的这个线程。
那么,你很可能会想得到“有新部分被画了”这个事件。ImageObserver 就是这类事件的一种接收器。只要是实现了ImageObserver这个接口的Object传进去就行了。具体的ImageObserver的imageUpdate方法,你可以直接刷新它的容器(因为容器内的图刷新了嘛,所以需要刷新容器的样子吧)。如果你肯定图是稳定的(好像BufferedImage就是)能一次画完的,可以直接传入null,表示不给它ImageObserver,不监听“有新部分被画了”这个事件
那么,你很可能会想得到“有新部分被画了”这个事件。ImageObserver 就是这类事件的一种接收器。只要是实现了ImageObserver这个接口的Object传进去就行了。具体的ImageObserver的imageUpdate方法,你可以直接刷新它的容器(因为容器内的图刷新了嘛,所以需要刷新容器的样子吧)。如果你肯定图是稳定的(好像BufferedImage就是)能一次画完的,可以直接传入null,表示不给它ImageObserver,不监听“有新部分被画了”这个事件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般都填this
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询