java drawimage()方法 您所在的位置:网站首页 加载动图 java drawimage()方法

java drawimage()方法

2023-08-16 02:31| 来源: 网络整理| 查看: 265

转载自  java drawimage()方法

图像使用的支持分布于java.applet, java.awt, 和 java.awt.image包中。每一个图像都用一个 java.awt.Image 对象表示。除了Image 类外,java.awt 包提供了其它的基本的图像支持,例如Graphics 类的 drawImage方法,Toolkit 对象的getImage 方法以及MediaTracker 类。在java.applet包中, Applet 类的getImage方法使得可以很容易的使用URL加载图像。最后,java.awt.image包提供可用于创建、操纵和观察图像的接口和类。

加载图像AWT可以很简单的加载两种格式的图像: GIF 和 JPEG。Applet和Toolkit 类提供了getImage

方法可以使用那两种格式。像这样使用:

myImage = getImage(URL); //只能在Applet 子类里

 或者

myImage = Toolkit.getDefaultToolkit().getImage(filenameOrURL);

getImage立即返回,因此你不必等待图像加载完而可以直接在你的程序中执行其它的操作。虽然这可以提高性能,但是有效程序需要更多的控制或者有关图像的更多信息。你可以通过使用MediaTracker类或者实现ImageObserver接口中定义的imageUpdate方法跟踪图像的加载。这一节也将告诉你如何轻松的使用MemoryImageSource类创建图像。

显示图像通过传递到paintComponent方法的Graphics对象可以很容易的显示图像。你简单的在Graphics对象上调用一个drawImage方法就可以。例如:g.drawImage(myImage, 0, 0,this);

这一节解释drawImage的四种形式,其中的两种可以进行图像的缩放。像getImage一样,drawImage也是异步的,即使图像还没有被全部加载或绘制也立即返回。

加载图像这 一节描述如何得到一个图像对应的Image 对象。只要图像数据在一个GIF 或者 JPEG 格式文件里面而且你知道它的文件名或者URL,那么从它 得到一个Image 就很简单:只要使用Applet 或者 Toolkit中的一个的getImage方法就就可以。getImage 方法立即返回,不检查图像数据是否存在。实际的图像加载通常直到程序第一次绘制图像时才进行。对于很多程序,这个不可见的后台加载工作工作得很好。否则需要跟踪图像的加载过程。这一节解释如何使用MediaTracker类和ImageObserver接口达到目的。

--------------------------------------------------------------------------------注意:  ImageIcon 类自动使用一个MediaTracker加载自己的图像。--------------------------------------------------------------------------------

最后,这节告诉你如何使用一个像MemoryImageSource这样的类轻松的创建一个图像。

使用getImage方法这节首先讨论Toolkit的getImage方法,然后才是Applet 的getImage 方法。

Toolkit 明了两个getImage 方法:

Image getImage(URL url) Image getImage(String filename)

下 面是使用Toolkit的getImage方法的几个例子。虽然每个Java程序和applet都可以使用这些方法, 但是 applets受通常的安 全限制。特别的,不被信任的applets不能成功的为getImage指定一个文件名,因为不被信任的applets不能从本机文件系统加载数据。你 可以从

安全限制找到有关不被信任的applets的限制方面资料.

Toolkit toolkit = Toolkit.getDefaultToolkit(); Image image1 = toolkit.getImage("imageFile.gif"); Image image2 = toolkit.getImage(new URL("http://java.sun.com/graphics/people.gif"));

Applet类提供两个getImage

方法:

Image getImage(URL url) Image getImage(URL url, String name)

只 有applets 可以使用Applet 的getImage 方法。而且Applet 的getImage 方法只有在完整的背景(AppletContext)下才能工作。因为这个原因,这些方法在构造方法或者在一个声明一个实例变量的申明里面不能工作。你应该从一个像init这样的方法里面调用getImage。

下面的代码范例演示了如何使用Applet 的code>getImage 方法。参考使用AWT创建一个GUI 得到getCodeBase和getDocumentBase方法的解释。

//在Applet子类的一个方法里:

Image image1 = getImage(getCodeBase(),"imageFile.gif"); Image image2 = getImage(getDocumentBase(),"anImageFile.jpeg"); Image image3 = getImage(new URL("http://java.sun.com/graphics/people.gif"));

请求和跟踪图像加载: MediaTracker和 ImageObserver你 可以以两种方法跟踪图像加载: MediaTracker 类和 ImageObserver 接口。MediaTracker 类对于很多程序是足够 的。你仅仅需要创建一个MediaTracker实例,告诉它跟踪一个或者多个图像,然后如果需要的话向MediaTracker 查询那些图像的状 态。在提高图像动画的外观和性能里面有一个范例的解释。动画范例展示了MediaTracker的两个特别有用的特性:请求一组图像数据的加载并且等待它们完成加载。请求一组图像数据加载可以使用checkID和checkAll 的带一个布尔参数的形式。将参数设置为 true可以开始加载任何还未被加载的图像。或者你可以请求加载图像然后使用waitForID和waitForAll方法等待。

ImageObserver接口可以运行你进行比MediaTracker更紧密的跟踪。 Component 类使用它,因此组件在它们要显示的图像被加载后进行重新绘制。为了使 用ImageObserver 接口,你需要实现ImageObserver的 imageUpdate 方法并且确保实现的对象被注册为一个图像观察器。通常,这个注册发生在你为drawImage方法指定一个ImageObserver,就像在稍后一节描述的那样。 imageUpdate 方法在图像的信息可见的任何时候被调用。

如果你浏览MediaTracker API 文档,你可能会注意到 Component类定义了两个看上去有用的方法: checkImage 和 prepareImage。MediaTracker类在很大程度上使得这些方法是不必要的。

用MemoryImageSource创建图像在像 MemoryImageSource类这样的图像生产者的帮助下,你可以从你的幸手涂鸦上构造图像。下面的代码范例打算创建一个100x100的图像表示一个沿X轴的从黑到蓝的渐变和沿Y轴的从黑到红的渐变。

int w = 100; int h = 100; int[] pix = new int[w * h]; int index = 0; for(int y = 0; y < h; y++) { int red = (y * 255) / (h - 1); for(int x = 0; x < w; x++) { int blue = (x * 255) / (w -1); pix[index++] = (255


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有